1// Flags: --expose-internals
2
3'use strict';
4
5const common = require('../common');
6const assert = require('assert');
7const http = require('http');
8const { kTimeout } = require('internal/timers');
9
10const server = http.createServer((req, res) => {
11  // This space is intentionally left blank.
12});
13
14server.listen(0, common.localhostIPv4, common.mustCall(() => {
15  const port = server.address().port;
16  const req = http.get(`http://${common.localhostIPv4}:${port}`);
17
18  req.setTimeout(1);
19  req.on('socket', common.mustCall((socket) => {
20    assert.strictEqual(socket[kTimeout], null);
21    socket.on('connect', common.mustCall(() => {
22      assert.strictEqual(socket[kTimeout]._idleTimeout, 1);
23    }));
24  }));
25  req.on('timeout', common.mustCall(() => req.abort()));
26  req.on('error', common.mustCall((err) => {
27    assert.strictEqual(err.message, 'socket hang up');
28    server.close();
29  }));
30}));
31