diff --git a/lib/_http_client.js b/lib/_http_client.js index a1750a1a00a58b..231ec45b77adde 100644 --- a/lib/_http_client.js +++ b/lib/_http_client.js @@ -312,10 +312,12 @@ ClientRequest.prototype._implicitHeader = function _implicitHeader() { }; ClientRequest.prototype.abort = function abort() { - if (!this.aborted) { - process.nextTick(emitAbortNT.bind(this)); + if (this.aborted) { + return; } + this.aborted = true; + process.nextTick(emitAbortNT.bind(this)); // If we're aborting, we don't care about any more response data. if (this.res) { diff --git a/test/parallel/test-http-client-abort2.js b/test/parallel/test-http-client-abort2.js index bc4b0e40838b36..3060a5a6fd5310 100644 --- a/test/parallel/test-http-client-abort2.js +++ b/test/parallel/test-http-client-abort2.js @@ -30,7 +30,9 @@ const server = http.createServer(common.mustCall((req, res) => { server.listen(0, common.mustCall(() => { const options = { port: server.address().port }; const req = http.get(options, common.mustCall((res) => { + res._dump = common.mustCall(res._dump.bind(res)); res.on('data', (data) => { + req.abort(); req.abort(); server.close(); });