Skip to content

Commit dd613ef

Browse files
fix: follow signal.reason in Request (#1580)
1 parent 40af2c0 commit dd613ef

File tree

2 files changed

+26
-11
lines changed

2 files changed

+26
-11
lines changed

lib/fetch/request.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -367,9 +367,9 @@ class Request {
367367
}
368368

369369
if (signal.aborted) {
370-
ac.abort()
370+
ac.abort(signal.reason)
371371
} else {
372-
const abort = () => ac.abort()
372+
const abort = () => ac.abort(signal.reason)
373373
signal.addEventListener('abort', abort, { once: true })
374374
requestFinalizer.register(this, { signal, abort })
375375
}
@@ -726,12 +726,12 @@ class Request {
726726
// 4. Make clonedRequestObject’s signal follow this’s signal.
727727
const ac = new AbortController()
728728
if (this.signal.aborted) {
729-
ac.abort()
729+
ac.abort(this.signal.reason)
730730
} else {
731731
this.signal.addEventListener(
732732
'abort',
733-
function () {
734-
ac.abort()
733+
() => {
734+
ac.abort(this.signal.reason)
735735
},
736736
{ once: true }
737737
)

test/fetch/request.js

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ const {
88
Headers
99
} = require('../../')
1010
const { kState } = require('../../lib/fetch/symbols.js')
11+
const hasSignalReason = !!~process.version.localeCompare('v16.14.0', undefined, { numeric: true })
1112

1213
test('arg validation', async (t) => {
1314
// constructor
@@ -270,9 +271,12 @@ test('undefined signal', t => {
270271

271272
test('pre aborted signal', t => {
272273
const ac = new AbortController()
273-
ac.abort()
274+
ac.abort('gwak')
274275
const req = new Request('http://asd', { signal: ac.signal })
275276
t.equal(req.signal.aborted, true)
277+
if (hasSignalReason) {
278+
t.equal(req.signal.reason, 'gwak')
279+
}
276280
t.end()
277281
})
278282

@@ -283,16 +287,23 @@ test('post aborted signal', t => {
283287
const req = new Request('http://asd', { signal: ac.signal })
284288
t.equal(req.signal.aborted, false)
285289
ac.signal.addEventListener('abort', () => {
286-
t.pass()
290+
if (hasSignalReason) {
291+
t.equal(req.signal.reason, 'gwak')
292+
} else {
293+
t.pass()
294+
}
287295
})
288-
ac.abort()
296+
ac.abort('gwak')
289297
})
290298

291299
test('pre aborted signal cloned', t => {
292300
const ac = new AbortController()
293-
ac.abort()
301+
ac.abort('gwak')
294302
const req = new Request('http://asd', { signal: ac.signal }).clone()
295303
t.equal(req.signal.aborted, true)
304+
if (hasSignalReason) {
305+
t.equal(req.signal.reason, 'gwak')
306+
}
296307
t.end()
297308
})
298309

@@ -324,9 +335,13 @@ test('post aborted signal cloned', t => {
324335
const req = new Request('http://asd', { signal: ac.signal }).clone()
325336
t.equal(req.signal.aborted, false)
326337
ac.signal.addEventListener('abort', () => {
327-
t.pass()
338+
if (hasSignalReason) {
339+
t.equal(req.signal.reason, 'gwak')
340+
} else {
341+
t.pass()
342+
}
328343
})
329-
ac.abort()
344+
ac.abort('gwak')
330345
})
331346

332347
test('Passing headers in init', (t) => {

0 commit comments

Comments
 (0)