From f6609ccedf6efba275b833a373eb645a0960078d Mon Sep 17 00:00:00 2001 From: Khafra <42794878+KhafraDev@users.noreply.github.com> Date: Fri, 19 Aug 2022 05:57:58 -0400 Subject: [PATCH] fix: allow third party AbortControllers (#1609) * fix: allow third party AbortControllers * fix: lint Co-authored-by: Matthew Aitken --- lib/fetch/request.js | 11 ++++++++++- test/fetch/request.js | 16 +++++++++++++++- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/lib/fetch/request.js b/lib/fetch/request.js index 06c2374135d..08f9fc6a752 100644 --- a/lib/fetch/request.js +++ b/lib/fetch/request.js @@ -835,6 +835,10 @@ webidl.converters.RequestInfo = function (V) { return webidl.converters.USVString(V) } +webidl.converters.AbortSignal = webidl.interfaceConverter( + AbortSignal +) + // https://fetch.spec.whatwg.org/#requestinit webidl.converters.RequestInit = webidl.dictionaryConverter([ { @@ -909,7 +913,12 @@ webidl.converters.RequestInit = webidl.dictionaryConverter([ }, { key: 'signal', - converter: webidl.converters.any + converter: webidl.nullableConverter( + (signal) => webidl.converters.AbortSignal( + signal, + { strict: false } + ) + ) }, { key: 'window', diff --git a/test/fetch/request.js b/test/fetch/request.js index 216d7e03bbb..a76b19ed30f 100644 --- a/test/fetch/request.js +++ b/test/fetch/request.js @@ -5,7 +5,8 @@ const { test } = require('tap') const { Request, - Headers + Headers, + fetch } = require('../../') const { kState } = require('../../lib/fetch/symbols.js') const hasSignalReason = !!~process.version.localeCompare('v16.14.0', undefined, { numeric: true }) @@ -421,3 +422,16 @@ test('invalid RequestInit values', (t) => { t.end() }) + +test('RequestInit.signal option', async (t) => { + t.throws(() => { + // eslint-disable-next-line no-new + new Request('http://asd', { + signal: true + }) + }, TypeError) + + await t.rejects(fetch('http://asd', { + signal: false + }), TypeError) +})