'use strict'; const common = require('../common'); const events = require('events'); const { createServer, request } = require('http'); const assert = require('assert'); events.captureRejections = true; { const server = createServer(common.mustCall(async (req, res) => { // We will test that this header is cleaned up before forwarding. res.setHeader('content-type', 'application/json'); throw new Error('kaboom'); })); server.listen(0, common.mustCall(() => { const req = request({ method: 'GET', host: server.address().host, port: server.address().port }); req.end(); req.on('response', common.mustCall((res) => { assert.strictEqual(res.statusCode, 500); assert.strictEqual(Object.hasOwn(res.headers, 'content-type'), false); let data = ''; res.setEncoding('utf8'); res.on('data', common.mustCall((chunk) => { data += chunk; })); res.on('end', common.mustCall(() => { assert.strictEqual(data, 'Internal Server Error'); server.close(); })); })); })); } { let resolve; const latch = new Promise((_resolve) => { resolve = _resolve; }); const server = createServer(common.mustCall(async (req, res) => { server.close(); // We will test that this header is cleaned up before forwarding. res.setHeader('content-type', 'application/json'); res.write('{'); req.resume(); // Wait so the data is on the wire await latch; throw new Error('kaboom'); })); server.listen(0, common.mustCall(() => { const req = request({ method: 'GET', host: server.address().host, port: server.address().port }); req.end(); req.on('response', common.mustCall((res) => { assert.strictEqual(res.statusCode, 200); assert.strictEqual(res.headers['content-type'], 'application/json'); resolve(); let data = ''; res.setEncoding('utf8'); res.on('data', common.mustCall((chunk) => { data += chunk; })); req.on('close', common.mustCall(() => { assert.strictEqual(data, '{'); })); })); })); } { const server = createServer(common.mustCall(async (req, res) => { // We will test that this header is cleaned up before forwarding. res.writeHead(200); throw new Error('kaboom'); })); server.listen(0, common.mustCall(() => { const req = request({ method: 'GET', host: server.address().host, port: server.address().port }); req.end(); req.on('error', common.mustCall((err) => { assert.strictEqual(err.code, 'ECONNRESET'); server.close(); })); })); }