summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
Diffstat (limited to 'ext')
-rw-r--r--ext/net/01_net.js6
-rw-r--r--ext/web/13_message_port.js15
2 files changed, 14 insertions, 7 deletions
diff --git a/ext/net/01_net.js b/ext/net/01_net.js
index cc10a1c0a..39df5a9d4 100644
--- a/ext/net/01_net.js
+++ b/ext/net/01_net.js
@@ -3,7 +3,7 @@
((window) => {
const core = window.Deno.core;
- const { BadResource } = core;
+ const { BadResource, Interrupted } = core;
const {
PromiseResolve,
SymbolAsyncIterator,
@@ -124,7 +124,7 @@
try {
conn = await this.accept();
} catch (error) {
- if (error instanceof BadResource) {
+ if (error instanceof BadResource || error instanceof Interrupted) {
return { value: undefined, done: true };
}
throw error;
@@ -191,7 +191,7 @@
try {
yield await this.receive();
} catch (err) {
- if (err instanceof BadResource) {
+ if (err instanceof BadResource || err instanceof Interrupted) {
break;
}
throw err;
diff --git a/ext/web/13_message_port.js b/ext/web/13_message_port.js
index c02b373d6..1430d8327 100644
--- a/ext/web/13_message_port.js
+++ b/ext/web/13_message_port.js
@@ -10,6 +10,7 @@
((window) => {
const core = window.Deno.core;
+ const { Interrupted } = core;
const webidl = window.__bootstrap.webidl;
const { setEventTargetData } = window.__bootstrap.eventTarget;
const { defineEventHandler } = window.__bootstrap.event;
@@ -134,10 +135,16 @@
this[_enabled] = true;
while (true) {
if (this[_id] === null) break;
- const data = await core.opAsync(
- "op_message_port_recv_message",
- this[_id],
- );
+ let data;
+ try {
+ data = await core.opAsync(
+ "op_message_port_recv_message",
+ this[_id],
+ );
+ } catch (err) {
+ if (err instanceof Interrupted) break;
+ throw err;
+ }
if (data === null) break;
let message, transferables;
try {