(fetchParams)
| 14179 | if (request.responseTainting === "cors") { |
| 14180 | } |
| 14181 | if (request.responseTainting === "basic") { |
| 14182 | response = filterResponse(response, "basic"); |
| 14183 | } else if (request.responseTainting === "cors") { |
| 14184 | response = filterResponse(response, "cors"); |
| 14185 | } else if (request.responseTainting === "opaque") { |
| 14186 | response = filterResponse(response, "opaque"); |
| 14187 | } else { |
| 14188 | assert(false); |
| 14189 | } |
| 14190 | } |
| 14191 | let internalResponse = response.status === 0 ? response : response.internalResponse; |
| 14192 | if (internalResponse.urlList.length === 0) { |
| 14193 | internalResponse.urlList.push(...request.urlList); |
| 14194 | } |
| 14195 | if (!request.timingAllowFailed) { |
| 14196 | response.timingAllowPassed = true; |
| 14197 | } |
| 14198 | if (response.type === "opaque" && internalResponse.status === 206 && internalResponse.rangeRequested && !request.headers.contains("range", true)) { |
| 14199 | response = internalResponse = makeNetworkError(); |
| 14200 | } |
| 14201 | if (response.status !== 0 && (request.method === "HEAD" || request.method === "CONNECT" || nullBodyStatus.includes(internalResponse.status))) { |
| 14202 | internalResponse.body = null; |
| 14203 | fetchParams.controller.dump = true; |
| 14204 | } |
| 14205 | if (request.integrity) { |
| 14206 | const processBodyError = (reason) => fetchFinale(fetchParams, makeNetworkError(reason)); |
| 14207 | if (request.responseTainting === "opaque" || response.body == null) { |
| 14208 | processBodyError(response.error); |
| 14209 | return; |
| 14210 | } |
| 14211 | const processBody = (bytes) => { |
| 14212 | if (!bytesMatch(bytes, request.integrity)) { |
| 14213 | processBodyError("integrity mismatch"); |
| 14214 | return; |
| 14215 | } |
| 14216 | response.body = safelyExtractBody(bytes)[0]; |
| 14217 | fetchFinale(fetchParams, response); |
| 14218 | }; |
| 14219 | yield fullyReadBody(response.body, processBody, processBodyError); |
| 14220 | } else { |
| 14221 | fetchFinale(fetchParams, response); |
| 14222 | } |
| 14223 | }); |
| 14224 | } |
| 14225 | function schemeFetch(fetchParams) { |
| 14226 | if (isCancelled(fetchParams) && fetchParams.request.redirectCount === 0) { |
| 14227 | return Promise.resolve(makeAppropriateNetworkError(fetchParams)); |
| 14228 | } |
| 14229 | const { request } = fetchParams; |
| 14230 | const { protocol: scheme } = requestCurrentURL(request); |
| 14231 | switch (scheme) { |
| 14232 | case "about:": { |
| 14233 | return Promise.resolve(makeNetworkError("about scheme is not supported")); |
| 14234 | } |
| 14235 | case "blob:": { |
| 14236 | if (!resolveObjectURL) { |
| 14237 | resolveObjectURL = __require("buffer").resolveObjectURL; |
| 14238 | } |
no test coverage detected