diff --git a/src/js/node/_http_server.ts b/src/js/node/_http_server.ts index edd958d037..232dc07eeb 100644 --- a/src/js/node/_http_server.ts +++ b/src/js/node/_http_server.ts @@ -803,7 +803,8 @@ const ServerPrototype = { } if (typeof optionalCallback === "function") setCloseCallback(this, optionalCallback); this.listening = false; - server.stop(); + server.stop(true); + return this; }, [EventEmitter.captureRejectionSymbol]: function (err, event, ...args) { switch (event) { diff --git a/test/js/node/test/parallel/test-http-client-finished.js b/test/js/node/test/parallel/test-http-client-finished.js new file mode 100644 index 0000000000..2d7e5b95b3 --- /dev/null +++ b/test/js/node/test/parallel/test-http-client-finished.js @@ -0,0 +1,27 @@ +'use strict'; +const common = require('../common'); +const http = require('http'); +const { finished } = require('stream'); + +{ + // Test abort before finished. + + const server = http.createServer(function(req, res) { + res.write('asd'); + }); + + server.listen(0, common.mustCall(function() { + http.request({ + port: this.address().port + }) + .on('response', (res) => { + res.on('readable', () => { + res.destroy(); + }); + finished(res, common.mustCall(() => { + server.close(); + })); + }) + .end(); + })); +}