'use strict'; const common = require('../common'); const http = require('http'); const stream = require('stream'); // Verify that when piping a stream to an `OutgoingMessage` (or a type that // inherits from `OutgoingMessage`), if data is emitted after the // `OutgoingMessage` was closed - a `write after end` error is raised class MyStream extends stream {} const server = http.createServer(common.mustCall(function(req, res) { const myStream = new MyStream(); myStream.pipe(res); process.nextTick(common.mustCall(() => { res.end(); myStream.emit('data', 'some data'); res.on('error', common.expectsError({ code: 'ERR_STREAM_WRITE_AFTER_END', type: Error })); process.nextTick(common.mustCall(() => server.close())); })); })); server.listen(0); server.on('listening', common.mustCall(function() { http.request({ port: server.address().port, method: 'GET', path: '/' }).end(); }));