@@ -38,13 +38,8 @@ class Response {
3838 // The static error() method steps are to return the result of creating a
3939 // Response object, given a new network error, "immutable", and this’s
4040 // relevant Realm.
41- const responseObject = new Response ( kConstruct )
42- responseObject [ kState ] = makeNetworkError ( )
43- responseObject [ kRealm ] = relevantRealm
44- responseObject [ kHeaders ] = new Headers ( kConstruct )
45- responseObject [ kHeaders ] [ kHeadersList ] = responseObject [ kState ] . headersList
46- responseObject [ kHeaders ] [ kGuard ] = 'immutable'
47- responseObject [ kHeaders ] [ kRealm ] = relevantRealm
41+ const responseObject = fromInnerResponse ( makeNetworkError ( ) , 'immutable' , relevantRealm )
42+
4843 return responseObject
4944 }
5045
@@ -67,13 +62,7 @@ class Response {
6762 // 3. Let responseObject be the result of creating a Response object, given a new response,
6863 // "response", and this’s relevant Realm.
6964 const relevantRealm = { settingsObject : { } }
70- const responseObject = new Response ( kConstruct )
71- responseObject [ kState ] = makeResponse ( { } )
72- responseObject [ kRealm ] = relevantRealm
73- responseObject [ kHeaders ] = new Headers ( kConstruct )
74- responseObject [ kHeaders ] [ kHeadersList ] = responseObject [ kState ] . headersList
75- responseObject [ kHeaders ] [ kGuard ] = 'response'
76- responseObject [ kHeaders ] [ kRealm ] = relevantRealm
65+ const responseObject = fromInnerResponse ( makeResponse ( { } ) , 'response' , relevantRealm )
7766
7867 // 4. Perform initialize a response given responseObject, init, and (body, "application/json").
7968 initializeResponse ( responseObject , init , { body : body [ 0 ] , type : 'application/json' } )
@@ -111,13 +100,7 @@ class Response {
111100
112101 // 4. Let responseObject be the result of creating a Response object,
113102 // given a new response, "immutable", and this’s relevant Realm.
114- const responseObject = new Response ( kConstruct )
115- responseObject [ kState ] = makeResponse ( { } )
116- responseObject [ kRealm ] = relevantRealm
117- responseObject [ kHeaders ] = new Headers ( kConstruct )
118- responseObject [ kHeaders ] [ kHeadersList ] = responseObject [ kState ] . headersList
119- responseObject [ kHeaders ] [ kGuard ] = 'immutable'
120- responseObject [ kHeaders ] [ kRealm ] = relevantRealm
103+ const responseObject = fromInnerResponse ( makeResponse ( { } ) , 'immutable' , relevantRealm )
121104
122105 // 5. Set responseObject’s response’s status to status.
123106 responseObject [ kState ] . status = status
@@ -269,15 +252,7 @@ class Response {
269252
270253 // 3. Return the result of creating a Response object, given
271254 // clonedResponse, this’s headers’s guard, and this’s relevant Realm.
272- const clonedResponseObject = new Response ( kConstruct )
273- clonedResponseObject [ kState ] = clonedResponse
274- clonedResponseObject [ kRealm ] = this [ kRealm ]
275- clonedResponseObject [ kHeaders ] = new Headers ( kConstruct )
276- clonedResponseObject [ kHeaders ] [ kHeadersList ] = clonedResponse . headersList
277- clonedResponseObject [ kHeaders ] [ kGuard ] = this [ kHeaders ] [ kGuard ]
278- clonedResponseObject [ kHeaders ] [ kRealm ] = this [ kHeaders ] [ kRealm ]
279-
280- return clonedResponseObject
255+ return fromInnerResponse ( clonedResponse , this [ kHeaders ] [ kRealm ] , this [ kRealm ] )
281256 }
282257}
283258
@@ -512,6 +487,23 @@ function initializeResponse (response, init, body) {
512487 }
513488}
514489
490+ /**
491+ * @param {any } innerResponse
492+ * @param {'request' | 'immutable' | 'request-no-cors' | 'response' | 'none' } guard
493+ * @param {any } [realm]
494+ * @returns {Response }
495+ */
496+ function fromInnerResponse ( innerResponse , guard , realm ) {
497+ const response = new Response ( kConstruct )
498+ response [ kState ] = innerResponse
499+ response [ kRealm ] = realm
500+ response [ kHeaders ] = new Headers ( kConstruct )
501+ response [ kHeaders ] [ kHeadersList ] = innerResponse . headersList
502+ response [ kHeaders ] [ kGuard ] = guard
503+ response [ kHeaders ] [ kRealm ] = realm
504+ return response
505+ }
506+
515507webidl . converters . ReadableStream = webidl . interfaceConverter (
516508 ReadableStream
517509)
@@ -588,5 +580,6 @@ module.exports = {
588580 makeAppropriateNetworkError,
589581 filterResponse,
590582 Response,
591- cloneResponse
583+ cloneResponse,
584+ fromInnerResponse
592585}
0 commit comments