(fetchParams)
| 14179 | } |
| 14180 | if (request.mode === "no-cors") { |
| 14181 | if (request.redirect !== "follow") { |
| 14182 | return makeNetworkError( |
| 14183 | 'redirect mode cannot be "follow" for "no-cors" request' |
| 14184 | ); |
| 14185 | } |
| 14186 | request.responseTainting = "opaque"; |
| 14187 | return yield schemeFetch(fetchParams); |
| 14188 | } |
| 14189 | if (!urlIsHttpHttpsScheme(requestCurrentURL(request))) { |
| 14190 | return makeNetworkError("URL scheme must be a HTTP(S) scheme"); |
| 14191 | } |
| 14192 | request.responseTainting = "cors"; |
| 14193 | return yield httpFetch(fetchParams); |
| 14194 | }))(); |
| 14195 | } |
| 14196 | if (recursive) { |
| 14197 | return response; |
| 14198 | } |
| 14199 | if (response.status !== 0 && !response.internalResponse) { |
| 14200 | if (request.responseTainting === "cors") { |
| 14201 | } |
| 14202 | if (request.responseTainting === "basic") { |
| 14203 | response = filterResponse(response, "basic"); |
| 14204 | } else if (request.responseTainting === "cors") { |
| 14205 | response = filterResponse(response, "cors"); |
| 14206 | } else if (request.responseTainting === "opaque") { |
| 14207 | response = filterResponse(response, "opaque"); |
| 14208 | } else { |
| 14209 | assert(false); |
| 14210 | } |
| 14211 | } |
| 14212 | let internalResponse = response.status === 0 ? response : response.internalResponse; |
| 14213 | if (internalResponse.urlList.length === 0) { |
| 14214 | internalResponse.urlList.push(...request.urlList); |
| 14215 | } |
| 14216 | if (!request.timingAllowFailed) { |
| 14217 | response.timingAllowPassed = true; |
| 14218 | } |
| 14219 | if (response.type === "opaque" && internalResponse.status === 206 && internalResponse.rangeRequested && !request.headers.contains("range", true)) { |
| 14220 | response = internalResponse = makeNetworkError(); |
| 14221 | } |
| 14222 | if (response.status !== 0 && (request.method === "HEAD" || request.method === "CONNECT" || nullBodyStatus.includes(internalResponse.status))) { |
| 14223 | internalResponse.body = null; |
| 14224 | fetchParams.controller.dump = true; |
| 14225 | } |
| 14226 | if (request.integrity) { |
| 14227 | const processBodyError = (reason) => fetchFinale(fetchParams, makeNetworkError(reason)); |
| 14228 | if (request.responseTainting === "opaque" || response.body == null) { |
| 14229 | processBodyError(response.error); |
| 14230 | return; |
| 14231 | } |
| 14232 | const processBody = (bytes) => { |
| 14233 | if (!bytesMatch(bytes, request.integrity)) { |
| 14234 | processBodyError("integrity mismatch"); |
| 14235 | return; |
| 14236 | } |
| 14237 | response.body = safelyExtractBody(bytes)[0]; |
| 14238 | fetchFinale(fetchParams, response); |
no test coverage detected