'use strict'; const common = require('../common'); const assert = require('assert'); const EventEmitter = require('events'); const EE = new EventEmitter(); const theErr = new Error('MyError'); EE.on( EventEmitter.errorMonitor, common.mustCall(function onErrorMonitor(e) { assert.strictEqual(e, theErr); }, 3) ); // Verify with no error listener assert.throws( () => EE.emit('error', theErr), theErr ); // Verify with error listener EE.once('error', common.mustCall((e) => assert.strictEqual(e, theErr))); EE.emit('error', theErr); // Verify it works with once process.nextTick(() => EE.emit('error', theErr)); assert.rejects(EventEmitter.once(EE, 'notTriggered'), theErr).then(common.mustCall()); // Only error events trigger error monitor EE.on('aEvent', common.mustCall()); EE.emit('aEvent');