// Flags: --expose-internals

'use strict';

const common = require('../common');
const assert = require('assert');
const http = require('http');
const { kTimeout } = require('internal/timers');

const server = http.createServer((req, res) => {
  // This space is intentionally left blank.
});

server.listen(0, common.localhostIPv4, common.mustCall(() => {
  const port = server.address().port;
  const req = http.get(`http://${common.localhostIPv4}:${port}`);

  req.setTimeout(1);
  req.on('socket', common.mustCall((socket) => {
    assert.strictEqual(socket[kTimeout], null);
    socket.on('connect', common.mustCall(() => {
      assert.strictEqual(socket[kTimeout]._idleTimeout, 1);
    }));
  }));
  req.on('timeout', common.mustCall(() => req.abort()));
  req.on('error', common.mustCall((err) => {
    assert.strictEqual(err.message, 'socket hang up');
    server.close();
  }));
}));
