diff --git a/lib/_http_client.js b/lib/_http_client.js index e972a3d5b9e9fd..e0374ce493b86a 100644 --- a/lib/_http_client.js +++ b/lib/_http_client.js @@ -360,7 +360,7 @@ function socketCloseListener() { // NOTE: It's important to get parser here, because it could be freed by // the `socketOnData`. var parser = socket.parser; - req.emit('close'); + if (req.res && req.res.readable) { // Socket closed before we emitted 'end' below. req.res.emit('aborted'); @@ -375,8 +375,11 @@ function socketCloseListener() { // fire on the request. req.socket._hadError = true; req.emit('error', createHangUpError()); + req.emit('aborted'); } + req.emit('close'); + // Too bad. That output wasn't getting written. // This is pretty terrible that it doesn't raise an error. // Fixed better in v0.10