From 22c47cc533751f748c3179c5ce094b73255b91d5 Mon Sep 17 00:00:00 2001 From: tyeth Date: Mon, 27 Oct 2025 15:43:11 +0000 Subject: [PATCH] fix(usb): disconnect handler can fail in various places --- js/workflows/usb.js | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/js/workflows/usb.js b/js/workflows/usb.js index 7b4ca9f..d441fed 100644 --- a/js/workflows/usb.js +++ b/js/workflows/usb.js @@ -53,16 +53,28 @@ class USBWorkflow extends Workflow { async onDisconnected(e, reconnect = true) { if (this.reader) { - await this.reader.cancel(); + try { + await this.reader.cancel(); + } catch (error) { + console.warn("Error calling reader.cancel:", error); + } this.reader = null; } if (this.writer) { - await this.writer.releaseLock(); + try { + await this.writer.releaseLock(); + } catch (error) { + console.warn("Error calling writer.releaseLock:", error); + } this.writer = null; } if (this._serialDevice) { - await this._serialDevice.close(); + try { + await this._serialDevice.close(); + } catch (error) { + console.warn("Error calling _serialDevice.close:", error); + } this._serialDevice = null; } @@ -273,7 +285,11 @@ class USBWorkflow extends Workflow { device.addEventListener("message", this._messageCallback); let onDisconnect = async (e) => { - await this.onDisconnected(e, false); + try { + await this.onDisconnected(e, false); + } catch (error) { + console.warn("Error calling onDisconnected (maybe already disconnected):", error); + } }; device.removeEventListener("disconnect", onDisconnect); device.addEventListener("disconnect", onDisconnect);