'use strict'; const common = require('../common'); const assert = require('assert'); const http = require('http'); for (const method of ['abort', 'destroy']) { const server = http.createServer(common.mustCall((req, res) => { res.end(req.url); })); server.listen(0, common.mustCall(() => { const agent = http.Agent({ keepAlive: true }); const req = http .request({ port: server.address().port, agent }) .on('socket', common.mustCall((socket) => { socket.on('free', common.mustCall()); })) .on('response', common.mustCall((res) => { assert.strictEqual(req.destroyed, false); res.on('end', () => { assert.strictEqual(req.destroyed, true); req[method](); assert.strictEqual(req.socket.destroyed, false); agent.destroy(); server.close(); }).resume(); })) .end(); assert.strictEqual(req.destroyed, false); })); }