From 0f0dd5b7ec2a7ac95e1b36c866f73b85e4fb4879 Mon Sep 17 00:00:00 2001 From: Andreu Botella Date: Fri, 10 Dec 2021 15:12:38 +0100 Subject: feat(ext/web): implement `AbortSignal.prototype.throwIfAborted()` (#13044) See whatwg/dom#1034. --- ext/web/03_abort_signal.js | 7 +++++++ ext/web/lib.deno_web.d.ts | 4 ++++ 2 files changed, 11 insertions(+) (limited to 'ext') diff --git a/ext/web/03_abort_signal.js b/ext/web/03_abort_signal.js index 6b278ba07..d46291b14 100644 --- a/ext/web/03_abort_signal.js +++ b/ext/web/03_abort_signal.js @@ -85,6 +85,13 @@ webidl.assertBranded(this, AbortSignal); return this[abortReason]; } + + throwIfAborted() { + webidl.assertBranded(this, AbortSignal); + if (this[abortReason] !== undefined) { + throw this[abortReason]; + } + } } defineEventHandler(AbortSignal.prototype, "abort"); diff --git a/ext/web/lib.deno_web.d.ts b/ext/web/lib.deno_web.d.ts index 3cdc2bea6..0f10af7f2 100644 --- a/ext/web/lib.deno_web.d.ts +++ b/ext/web/lib.deno_web.d.ts @@ -293,6 +293,10 @@ interface AbortSignal extends EventTarget { listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions, ): void; + + /** Throws this AbortSignal's abort reason, if its AbortController has + * signaled to abort; otherwise, does nothing. */ + throwIfAborted(): void; } declare var AbortSignal: { -- cgit v1.2.3