@@ -751,14 +751,6 @@ class Request {
751751
752752 // 3. Let clonedRequestObject be the result of creating a Request object,
753753 // given clonedRequest, this’s headers’s guard, and this’s relevant Realm.
754- const clonedRequestObject = new Request ( kConstruct )
755- clonedRequestObject [ kState ] = clonedRequest
756- clonedRequestObject [ kRealm ] = this [ kRealm ]
757- clonedRequestObject [ kHeaders ] = new Headers ( kConstruct )
758- clonedRequestObject [ kHeaders ] [ kHeadersList ] = clonedRequest . headersList
759- clonedRequestObject [ kHeaders ] [ kGuard ] = this [ kHeaders ] [ kGuard ]
760- clonedRequestObject [ kHeaders ] [ kRealm ] = this [ kHeaders ] [ kRealm ]
761-
762754 // 4. Make clonedRequestObject’s signal follow this’s signal.
763755 const ac = new AbortController ( )
764756 if ( this . signal . aborted ) {
@@ -771,10 +763,9 @@ class Request {
771763 }
772764 )
773765 }
774- clonedRequestObject [ kSignal ] = ac . signal
775766
776767 // 4. Return clonedRequestObject.
777- return clonedRequestObject
768+ return fromInnerRequest ( clonedRequest , ac . signal , this [ kHeaders ] [ kGuard ] , this [ kRealm ] )
778769 }
779770}
780771
@@ -844,6 +835,26 @@ function cloneRequest (request) {
844835 return newRequest
845836}
846837
838+ /**
839+ * @param {any } innerRequest
840+ * @param {AbortSignal } signal
841+ * @param {'request' | 'immutable' | 'request-no-cors' | 'response' | 'none' } guard
842+ * @param {any } [realm]
843+ * @returns {Request }
844+ */
845+ function fromInnerRequest ( innerRequest , signal , guard , realm ) {
846+ const request = new Request ( kConstruct )
847+ request [ kState ] = innerRequest
848+ request [ kRealm ] = realm
849+ request [ kSignal ] = signal
850+ request [ kSignal ] [ kRealm ] = realm
851+ request [ kHeaders ] = new Headers ( kConstruct )
852+ request [ kHeaders ] [ kHeadersList ] = innerRequest . headersList
853+ request [ kHeaders ] [ kGuard ] = guard
854+ request [ kHeaders ] [ kRealm ] = realm
855+ return request
856+ }
857+
847858Object . defineProperties ( Request . prototype , {
848859 method : kEnumerableProperty ,
849860 url : kEnumerableProperty ,
@@ -970,4 +981,4 @@ webidl.converters.RequestInit = webidl.dictionaryConverter([
970981 }
971982] )
972983
973- module . exports = { Request, makeRequest }
984+ module . exports = { Request, makeRequest, fromInnerRequest }
0 commit comments