@@ -573,53 +573,46 @@ async function mainFetch (fetchParams, recursive = false) {
573573 // 11. If response is null, then set response to the result of running
574574 // the steps corresponding to the first matching statement:
575575 if ( response === null ) {
576- response = await ( async ( ) => {
577- const currentURL = requestCurrentURL ( request )
578-
579- if (
580- // - request’s current URL’s origin is same origin with request’s origin,
581- // and request’s response tainting is "basic"
582- ( sameOrigin ( currentURL , request . url ) && request . responseTainting === 'basic' ) ||
583- // request’s current URL’s scheme is "data"
584- ( currentURL . protocol === 'data:' ) ||
585- // - request’s mode is "navigate" or "websocket"
586- ( request . mode === 'navigate' || request . mode === 'websocket' )
587- ) {
588- // 1. Set request’s response tainting to "basic".
589- request . responseTainting = 'basic'
590-
591- // 2. Return the result of running scheme fetch given fetchParams.
592- return await schemeFetch ( fetchParams )
593- }
594-
595- // request’s mode is "same-origin"
596- if ( request . mode === 'same-origin' ) {
597- // 1. Return a network error.
598- return makeNetworkError ( 'request mode cannot be "same-origin"' )
599- }
600-
601- // request’s mode is "no-cors"
602- if ( request . mode === 'no-cors' ) {
603- // 1. If request’s redirect mode is not "follow", then return a network
604- // error.
605- if ( request . redirect !== 'follow' ) {
606- return makeNetworkError (
607- 'redirect mode cannot be "follow" for "no-cors" request'
608- )
609- }
610-
576+ const currentURL = requestCurrentURL ( request )
577+ if (
578+ // - request’s current URL’s origin is same origin with request’s origin,
579+ // and request’s response tainting is "basic"
580+ ( sameOrigin ( currentURL , request . url ) && request . responseTainting === 'basic' ) ||
581+ // request’s current URL’s scheme is "data"
582+ ( currentURL . protocol === 'data:' ) ||
583+ // - request’s mode is "navigate" or "websocket"
584+ ( request . mode === 'navigate' || request . mode === 'websocket' )
585+ ) {
586+ // 1. Set request’s response tainting to "basic".
587+ request . responseTainting = 'basic'
588+
589+ // 2. Return the result of running scheme fetch given fetchParams.
590+ response = await schemeFetch ( fetchParams )
591+
592+ // request’s mode is "same-origin"
593+ } else if ( request . mode === 'same-origin' ) {
594+ // 1. Return a network error.
595+ response = makeNetworkError ( 'request mode cannot be "same-origin"' )
596+
597+ // request’s mode is "no-cors"
598+ } else if ( request . mode === 'no-cors' ) {
599+ // 1. If request’s redirect mode is not "follow", then return a network
600+ // error.
601+ if ( request . redirect !== 'follow' ) {
602+ response = makeNetworkError (
603+ 'redirect mode cannot be "follow" for "no-cors" request'
604+ )
605+ } else {
611606 // 2. Set request’s response tainting to "opaque".
612607 request . responseTainting = 'opaque'
613608
614609 // 3. Return the result of running scheme fetch given fetchParams.
615- return await schemeFetch ( fetchParams )
616- }
617-
618- // request’s current URL’s scheme is not an HTTP(S) scheme
619- if ( ! urlIsHttpHttpsScheme ( requestCurrentURL ( request ) ) ) {
620- // Return a network error.
621- return makeNetworkError ( 'URL scheme must be a HTTP(S) scheme' )
610+ response = await schemeFetch ( fetchParams )
622611 }
612+ // request’s current URL’s scheme is not an HTTP(S) scheme
613+ } else if ( ! urlIsHttpHttpsScheme ( requestCurrentURL ( request ) ) ) {
614+ // Return a network error.
615+ response = makeNetworkError ( 'URL scheme must be a HTTP(S) scheme' )
623616
624617 // - request’s use-CORS-preflight flag is set
625618 // - request’s unsafe-request flag is set and either request’s method is
@@ -633,13 +626,14 @@ async function mainFetch (fetchParams, recursive = false) {
633626 // 4. Return corsWithPreflightResponse.
634627 // TODO
635628
636- // Otherwise
629+ // Otherwise
630+ } else {
637631 // 1. Set request’s response tainting to "cors".
638632 request . responseTainting = 'cors'
639633
640634 // 2. Return the result of running HTTP fetch given fetchParams.
641- return await httpFetch ( fetchParams )
642- } ) ( )
635+ response = await httpFetch ( fetchParams )
636+ }
643637 }
644638
645639 // 12. If recursive is true, then return response.
0 commit comments