From 6877cc00e47e625c408ea91155d8810c306bec73 Mon Sep 17 00:00:00 2001 From: Tomas Martykan Date: Tue, 3 Dec 2024 11:34:25 +0100 Subject: [PATCH] fix(connect): ignore disposed error in devicelist --- packages/connect/src/device/DeviceList.ts | 33 ++++++++++++++++------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/packages/connect/src/device/DeviceList.ts b/packages/connect/src/device/DeviceList.ts index ce261e51f99d..7a271e2f603e 100644 --- a/packages/connect/src/device/DeviceList.ts +++ b/packages/connect/src/device/DeviceList.ts @@ -268,9 +268,17 @@ export class DeviceList extends TypedEmitter implements IDevic const { promise, reject } = resolveAfter(1000, initParams); this.rejectPending = reject; - return promise.then(this.createInitPromise.bind(this)).finally(() => { - this.rejectPending = undefined; - }); + return promise + .then(this.createInitPromise.bind(this)) + .catch(error => { + if (error.message === 'Disposed') { + return; + } + throw error; + }) + .finally(() => { + this.rejectPending = undefined; + }); } private async selectTransport([transport, ...rest]: Transport[]): Promise { @@ -351,12 +359,19 @@ export class DeviceList extends TypedEmitter implements IDevic this.on(DEVICE.CONNECT, onDeviceConnect); this.on(DEVICE.CONNECT_UNACQUIRED, onDeviceConnect); - return promise.finally(() => { - this.rejectPending = undefined; - clearTimeout(autoResolveTransportEventTimeout); - this.off(DEVICE.CONNECT, onDeviceConnect); - this.off(DEVICE.CONNECT_UNACQUIRED, onDeviceConnect); - }); + return promise + .catch(error => { + if (error.message === 'Disposed') { + return; + } + throw error; + }) + .finally(() => { + this.rejectPending = undefined; + clearTimeout(autoResolveTransportEventTimeout); + this.off(DEVICE.CONNECT, onDeviceConnect); + this.off(DEVICE.CONNECT_UNACQUIRED, onDeviceConnect); + }); } getDeviceCount() {