'use strict';

// This tests that the error emitted on the socket does
// not get fired again when the 'error' event handler throws
// an error.

const common = require('../common');
const { addresses } = require('../common/internet');
const { errorLookupMock } = require('../common/dns');

const assert = require('assert');
const http = require('http');

const host = addresses.INVALID_HOST;

const req = http.get({
  host,
  lookup: common.mustCall(errorLookupMock())
});
const err = new Error('mock unexpected code error');
req.on('error', common.mustCall(() => {
  throw err;
}));

process.on('uncaughtException', common.mustCall((e) => {
  assert.strictEqual(e, err);
}));
