diff --git a/lib/_http_server.js b/lib/_http_server.js index 9c8b5cb8fbfe8e..928b57b3719684 100644 --- a/lib/_http_server.js +++ b/lib/_http_server.js @@ -561,6 +561,8 @@ function resOnFinish(req, res, socket, state, server) { req._dump(); res.detachSocket(socket); + req.emit('close'); + res.emit('close'); if (res._last) { if (typeof socket.destroySoon === 'function') { diff --git a/test/parallel/test-http-req-res-close.js b/test/parallel/test-http-req-res-close.js new file mode 100644 index 00000000000000..240134cb5d0902 --- /dev/null +++ b/test/parallel/test-http-req-res-close.js @@ -0,0 +1,16 @@ +'use strict'; + +const common = require('../common'); +const http = require('http'); + +const server = http.Server(common.mustCall((req, res) => { + res.end(); + res.on('finish', common.mustCall()); + res.on('close', common.mustCall()); + req.on('close', common.mustCall()); + res.socket.on('close', () => server.close()); +})); + +server.listen(0, common.mustCall(() => { + http.get({ port: server.address().port }, common.mustCall()); +}));