'use strict'; const common = require('../common'); const http = require('http'); const net = require('net'); const { finished } = require('stream'); const headers = 'GET / HTTP/1.1\r\n' + 'Host: localhost\r\n' + 'Connection: keep-alive\r\n' + 'Agent: node\r\n'; const baseTimeout = 1000; const server = http.createServer(common.mustCall((req, res) => { req.resume(); res.writeHead(200); res.end(); }, 2)); server.keepAliveTimeout = 10 * baseTimeout; server.headersTimeout = baseTimeout; server.once('timeout', common.mustNotCall((socket) => { socket.destroy(); })); server.listen(0, () => { const client = net.connect(server.address().port); // first request client.write(headers); client.write('\r\n'); setTimeout(() => { // second request client.write(headers); // `headersTimeout` doesn't seem to fire if request // is sent altogether. setTimeout(() => { client.write('\r\n'); client.end(); }, 10); }, baseTimeout + 10); client.resume(); finished(client, common.mustCall((err) => { server.close(); })); });