'use strict'; const {Readable} = require('stream'); class IncomingMessage extends Readable { constructor(socket, highWaterMark) { super({ emitClose: false, autoDestroy: true, highWaterMark }); this.statusCode = null; this.statusMessage = ''; this.httpVersion = '2.0'; this.httpVersionMajor = 2; this.httpVersionMinor = 0; this.headers = {}; this.trailers = {}; this.req = null; this.aborted = false; this.complete = false; this.upgrade = null; this.rawHeaders = []; this.rawTrailers = []; this.socket = socket; this._dumped = false; } get connection() { return this.socket; } set connection(value) { this.socket = value; } _destroy(error, callback) { if (!this.readableEnded) { this.aborted = true; } // See https://github.com/nodejs/node/issues/35303 callback(); this.req._request.destroy(error); } setTimeout(ms, callback) { this.req.setTimeout(ms, callback); return this; } _dump() { if (!this._dumped) { this._dumped = true; this.removeAllListeners('data'); this.resume(); } } _read() { if (this.req) { this.req._request.resume(); } } } module.exports = IncomingMessage;