diff --git a/lib/_http_incoming.js b/lib/_http_incoming.js index 067a4cda3e39..04695ae640e2 100644 --- a/lib/_http_incoming.js +++ b/lib/_http_incoming.js @@ -512,7 +512,14 @@ IncomingMessage.prototype._dump = function _dump() { // If there is buffered data, it may trigger 'data' events. // Remove 'data' event listeners explicitly. this.removeAllListeners('data'); - this.resume(); + if (this.complete && !this.destroyed && this.readableLength === 0) { + // The message was fully received and never read: there is nothing to + // pull off the wire. Go straight to the 'end' emission instead of + // paying for the resume() and flow() scheduling machinery. + this.read(0); + } else { + this.resume(); + } } };