• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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