feat: conditionally emit errors

test: add tests for emit override
This commit is contained in:
Jacob Heun
2018-11-12 15:43:32 +01:00
parent e92053da9a
commit f71fdfdf35
2 changed files with 39 additions and 0 deletions

View File

@ -51,7 +51,10 @@ class Node extends EventEmitter {
this._transport = [] // Transport instances/references
this._discovery = [] // Discovery service instances/references
// create the switch, and listen for errors
this._switch = new Switch(this.peerInfo, this.peerBook, _options.switch)
this._switch.on('error', (...args) => this.emit('error', ...args))
this.stats = this._switch.stats
this.connectionManager = new ConnectionManager(this, _options.connectionManager)
@ -162,6 +165,21 @@ class Node extends EventEmitter {
})
}
/**
* Overrides EventEmitter.emit to conditionally emit errors
* if there is a handler. If not, errors will be logged.
* @param {string} eventName
* @param {...any} args
* @returns {void}
*/
emit (eventName, ...args) {
if (eventName === 'error' && !this._events.error) {
log.error(...args)
} else {
super.emit(eventName, ...args)
}
}
/**
* Starts the libp2p node and all sub services
*