const { Transform } = require('stream'); class HeaderHostTransformer extends Transform { constructor(opts = {}) { super(opts); this.host = opts.host || 'localhost'; this.replaced = false; } _transform(data, encoding, callback) { callback( null, this.replaced // after replacing the first instance of the Host header we just become a regular passthrough ? data : data.toString().replace(/(\r\n[Hh]ost: )\S+/, (match, $1) => { this.replaced = true; return $1 + this.host; }) ); } } module.exports = HeaderHostTransformer;