1'use strict';
2
3const common = require('../common');
4const assert = require('assert');
5const domain = require('domain');
6const EventEmitter = require('events');
7
8const d = new domain.Domain();
9const e = new EventEmitter();
10
11d.on('error', common.mustCall((err) => {
12  assert.strictEqual(err.message, 'foobar');
13  assert.strictEqual(err.domain, d);
14  assert.strictEqual(err.domainEmitter, e);
15  assert.strictEqual(err.domainBound, undefined);
16  assert.strictEqual(err.domainThrown, false);
17}));
18
19d.add(e);
20e.emit('error', new Error('foobar'));
21
22{
23  // Ensure initial params pass to origin `EventEmitter.init` function
24  const e = new EventEmitter({ captureRejections: true });
25  const kCapture = Object.getOwnPropertySymbols(e)
26    .find((it) => it.description === 'kCapture');
27  assert.strictEqual(e[kCapture], true);
28}
29