Skip to content

Commit 22c47cc

Browse files
committed
fix(usb): disconnect handler can fail in various places
1 parent 27f2126 commit 22c47cc

File tree

1 file changed

+20
-4
lines changed

1 file changed

+20
-4
lines changed

js/workflows/usb.js

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,16 +53,28 @@ class USBWorkflow extends Workflow {
5353

5454
async onDisconnected(e, reconnect = true) {
5555
if (this.reader) {
56-
await this.reader.cancel();
56+
try {
57+
await this.reader.cancel();
58+
} catch (error) {
59+
console.warn("Error calling reader.cancel:", error);
60+
}
5761
this.reader = null;
5862
}
5963
if (this.writer) {
60-
await this.writer.releaseLock();
64+
try {
65+
await this.writer.releaseLock();
66+
} catch (error) {
67+
console.warn("Error calling writer.releaseLock:", error);
68+
}
6169
this.writer = null;
6270
}
6371

6472
if (this._serialDevice) {
65-
await this._serialDevice.close();
73+
try {
74+
await this._serialDevice.close();
75+
} catch (error) {
76+
console.warn("Error calling _serialDevice.close:", error);
77+
}
6678
this._serialDevice = null;
6779
}
6880

@@ -273,7 +285,11 @@ class USBWorkflow extends Workflow {
273285
device.addEventListener("message", this._messageCallback);
274286

275287
let onDisconnect = async (e) => {
276-
await this.onDisconnected(e, false);
288+
try {
289+
await this.onDisconnected(e, false);
290+
} catch (error) {
291+
console.warn("Error calling onDisconnected (maybe already disconnected):", error);
292+
}
277293
};
278294
device.removeEventListener("disconnect", onDisconnect);
279295
device.addEventListener("disconnect", onDisconnect);

0 commit comments

Comments
 (0)