summaryrefslogtreecommitdiff
path: root/ext/fetch/23_request.js
diff options
context:
space:
mode:
Diffstat (limited to 'ext/fetch/23_request.js')
-rw-r--r--ext/fetch/23_request.js12
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) {