diff --git a/lib/controller.ts b/lib/controller.ts index cd9e62d34..3e61b6210 100644 --- a/lib/controller.ts +++ b/lib/controller.ts @@ -50,7 +50,10 @@ class Controller { private extensionArgs: ExtensionArgs; constructor(restartCallback: () => void, exitCallback: (code: number) => void) { - this.eventBus = new EventBus(); + this.eventBus = new EventBus( /* istanbul ignore next */ (error) => { + logger.error(`Error: ${error.message}`); + logger.debug(error.stack); + }); this.zigbee = new Zigbee(this.eventBus); this.mqtt = new MQTT(this.eventBus); this.state = new State(this.eventBus); diff --git a/lib/eventBus.ts b/lib/eventBus.ts index 7315c53a2..afa965b86 100644 --- a/lib/eventBus.ts +++ b/lib/eventBus.ts @@ -1,4 +1,5 @@ import events from 'events'; +events.captureRejections = true; // eslint-disable-next-line type ListenerKey = object; @@ -7,8 +8,9 @@ export default class EventBus { private callbacksByExtension: { [s: string]: { event: string, callback: (...args: unknown[]) => void }[] } = {}; private emitter = new events.EventEmitter(); - constructor() { + constructor(onError: (error: Error) => void) { this.emitter.setMaxListeners(100); + this.emitter.on('error', onError); } public emitAdapterDisconnected(): void {