Skip to content

Commit 90e2e13

Browse files
authored
make cloned request inherit dispatcher (#3631)
* make cloned request inherit dispatcher * remove bad test
1 parent 862c035 commit 90e2e13

File tree

4 files changed

+17
-19
lines changed

4 files changed

+17
-19
lines changed

lib/web/cache/cache.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -514,6 +514,7 @@ class Cache {
514514
for (const request of requests) {
515515
const requestObject = fromInnerRequest(
516516
request,
517+
undefined,
517518
new AbortController().signal,
518519
'immutable'
519520
)

lib/web/fetch/request.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -775,7 +775,7 @@ class Request {
775775
}
776776

777777
// 4. Return clonedRequestObject.
778-
return fromInnerRequest(clonedRequest, ac.signal, getHeadersGuard(this[kHeaders]))
778+
return fromInnerRequest(clonedRequest, this[kDispatcher], ac.signal, getHeadersGuard(this[kHeaders]))
779779
}
780780

781781
[nodeUtil.inspect.custom] (depth, options) {
@@ -875,13 +875,15 @@ function cloneRequest (request) {
875875
/**
876876
* @see https://fetch.spec.whatwg.org/#request-create
877877
* @param {any} innerRequest
878+
* @param {import('../../dispatcher/agent')} dispatcher
878879
* @param {AbortSignal} signal
879880
* @param {'request' | 'immutable' | 'request-no-cors' | 'response' | 'none'} guard
880881
* @returns {Request}
881882
*/
882-
function fromInnerRequest (innerRequest, signal, guard) {
883+
function fromInnerRequest (innerRequest, dispatcher, signal, guard) {
883884
const request = new Request(kConstruct)
884885
request[kState] = innerRequest
886+
request[kDispatcher] = dispatcher
885887
request[kSignal] = signal
886888
request[kHeaders] = new Headers(kConstruct)
887889
setHeadersList(request[kHeaders], innerRequest.headersList)

test/fetch/issue-3630.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
'use strict'
2+
3+
const { test } = require('node:test')
4+
const assert = require('node:assert')
5+
const { Request, Agent } = require('../..')
6+
const { kDispatcher } = require('../../lib/web/fetch/symbols')
7+
8+
test('Cloned request should inherit its dispatcher', () => {
9+
const agent = new Agent()
10+
const request = new Request('https://a', { dispatcher: agent })
11+
assert.strictEqual(request[kDispatcher], agent)
12+
})

test/fetch/request.js

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,6 @@ const {
1010
Headers,
1111
fetch
1212
} = require('../../')
13-
const { fromInnerRequest, makeRequest } = require('../../lib/web/fetch/request')
14-
const { kState, kSignal, kHeaders } = require('../../lib/web/fetch/symbols')
15-
const { getHeadersGuard, getHeadersList } = require('../../lib/web/fetch/headers')
1613

1714
const hasSignalReason = 'reason' in AbortSignal.prototype
1815

@@ -462,17 +459,3 @@ test('Issue#2465', async (t) => {
462459
const request = new Request('http://localhost', { body: new SharedArrayBuffer(0), method: 'POST' })
463460
strictEqual(await request.text(), '[object SharedArrayBuffer]')
464461
})
465-
466-
test('fromInnerRequest', () => {
467-
const innerRequest = makeRequest({
468-
urlList: [new URL('http://asd')]
469-
})
470-
const signal = new AbortController().signal
471-
const request = fromInnerRequest(innerRequest, signal, 'immutable')
472-
473-
// check property
474-
assert.strictEqual(request[kState], innerRequest)
475-
assert.strictEqual(request[kSignal], signal)
476-
assert.strictEqual(getHeadersList(request[kHeaders]), innerRequest.headersList)
477-
assert.strictEqual(getHeadersGuard(request[kHeaders]), 'immutable')
478-
})

0 commit comments

Comments
 (0)