diff --git a/lib/_http_client.js b/lib/_http_client.js index 5b568628006d68..7e437869de5b6b 100644 --- a/lib/_http_client.js +++ b/lib/_http_client.js @@ -346,15 +346,19 @@ function socketCloseListener() { // NOTE: It's important to get parser here, because it could be freed by // the `socketOnData`. var parser = socket.parser; - if (req.res && req.res.readable) { - // Socket closed before we emitted 'end' below. - req.res.emit('aborted'); - var res = req.res; - res.on('end', function() { + var res = req.res; + if (res) { + if (res.readable) { + // Socket closed before we emitted 'end' below. + res.emit('aborted'); + res.on('end', function() { + this.emit('close'); + }); + res.push(null); + } else { res.emit('close'); - }); - res.push(null); - } else if (!req.res && !req.socket._hadError) { + } + } else if (!req.socket._hadError) { // This socket error fired before we started to // receive a response. The error needs to // fire on the request.