1'use strict'; 2const common = require('../common'); 3 4// This test ensures that `ClientRequest.prototype.setTimeout()` does 5// not add a listener for the `'connect'` event to the socket if the 6// socket is already connected. 7 8const assert = require('assert'); 9const http = require('http'); 10 11// Maximum allowed value for timeouts. 12const timeout = 2 ** 31 - 1; 13 14const server = http.createServer((req, res) => { 15 res.end(); 16}); 17 18server.listen(0, common.mustCall(() => { 19 const agent = new http.Agent({ keepAlive: true, maxSockets: 1 }); 20 const options = { port: server.address().port, agent: agent }; 21 22 doRequest(options, common.mustCall(() => { 23 const req = doRequest(options, common.mustCall(() => { 24 agent.destroy(); 25 server.close(); 26 })); 27 28 req.on('socket', common.mustCall((socket) => { 29 assert.strictEqual(socket.listenerCount('connect'), 0); 30 })); 31 })); 32})); 33 34function doRequest(options, callback) { 35 const req = http.get(options, (res) => { 36 res.on('end', callback); 37 res.resume(); 38 }); 39 40 req.setTimeout(timeout); 41 return req; 42} 43