diff options
Diffstat (limited to 'ext/fetch/23_request.js')
-rw-r--r-- | ext/fetch/23_request.js | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/ext/fetch/23_request.js b/ext/fetch/23_request.js index 508a29139..c09e3326f 100644 --- a/ext/fetch/23_request.js +++ b/ext/fetch/23_request.js @@ -157,14 +157,14 @@ * @param {InnerRequest} request * @returns {InnerRequest} */ - function cloneInnerRequest(request) { + function cloneInnerRequest(request, skipBody = false) { const headerList = ArrayPrototypeMap( request.headerList, (x) => [x[0], x[1]], ); let body = null; - if (request.body !== null) { + if (request.body !== null && !skipBody) { body = request.body.clone(); } @@ -315,12 +315,14 @@ if (!ObjectPrototypeIsPrototypeOf(RequestPrototype, input)) { throw new TypeError("Unreachable"); } - request = input[_request]; + const originalReq = input[_request]; + // fold in of step 12 from below + request = cloneInnerRequest(originalReq, true); + request.redirectCount = 0; // reset to 0 - cloneInnerRequest copies the value signal = input[_signal]; } - // 12. - // TODO(lucacasonato): create a copy of `request` + // 12. is folded into the else statement of step 6 above. // 22. if (init.redirect !== undefined) { |