1'use strict'; 2const common = require('../common'); 3const http = require('http'); 4const stream = require('stream'); 5 6// Verify that when piping a stream to an `OutgoingMessage` (or a type that 7// inherits from `OutgoingMessage`), if data is emitted after the 8// `OutgoingMessage` was closed - a `write after end` error is raised 9 10class MyStream extends stream {} 11 12const server = http.createServer(common.mustCall(function(req, res) { 13 const myStream = new MyStream(); 14 myStream.pipe(res); 15 16 process.nextTick(common.mustCall(() => { 17 res.end(); 18 myStream.emit('data', 'some data'); 19 res.on('error', common.expectsError({ 20 code: 'ERR_STREAM_WRITE_AFTER_END', 21 name: 'Error' 22 })); 23 24 process.nextTick(common.mustCall(() => server.close())); 25 })); 26})); 27 28server.listen(0); 29 30server.on('listening', common.mustCall(function() { 31 http.request({ 32 port: server.address().port, 33 method: 'GET', 34 path: '/' 35 }).end(); 36})); 37