Add an event listener without causing any side effects.
Adding an event listener to an emitter object will normally trigger
certain side effects. E.g. the
newListener
event will be emitted for every new listener added. A
MaxListenersExceededWarning
process warning will be emitted if the
emitter reaches is maximum listener
count.
Or a readable stream will enter flowing
mode if a data
listener is added.
This module gives you the ability to attach a listener without triggering any of these side effects.
Only use this module if you are sure you don't want any side effects and there's other way to achieve your goals!
npm install secret-event-listener --save
const {EventEmitter} = require('events')
const addSecretListener = require('secret-event-listener')
const emitter = new EventEmitter()
emitter.on('newListener', function () {
throw new Error('should not fire the newListener event!')
})
addSecretListener(emitter, 'foo', function () {
console.log('foo event fired :)')
})
emitter.emit('foo')
Arguments:
emitter
- an object inheriting fromEventEmitter
eventName
- the event to add thelistener
tolistener
- a listener function which should be called every time an event ofeventName
is emitted.
Like the main addSecretListener
function, except the listener
is
added to the beginning of the listeners array for the event named
eventName
.