@@ -42,7 +42,7 @@ import {
4242
4343import type { Addressable , AddressLike } from "../address/index.js" ;
4444import type { BigNumberish , BytesLike } from "../utils/index.js" ;
45- import type { Listener } from "../utils/index.js" ;
45+ import type { FetchResponse , Listener } from "../utils/index.js" ;
4646
4747import type { Networkish } from "./network.js" ;
4848import type { FetchUrlFeeDataNetworkPlugin } from "./plugins-network.js" ;
@@ -604,15 +604,26 @@ export class AbstractProvider implements Provider {
604604
605605 let errorMessage = "unknown error" ;
606606
607- const resp = await request . send ( ) ;
607+ // Fetch the resource...
608+ let resp : FetchResponse ;
608609 try {
609- const result = resp . bodyJson ;
610- if ( result . data ) {
611- this . emit ( "debug" , { action : "receiveCcipReadFetchResult" , request, result } ) ;
612- return result . data ;
613- }
614- if ( result . message ) { errorMessage = result . message ; }
615- this . emit ( "debug" , { action : "receiveCcipReadFetchError" , request, result } ) ;
610+ resp = await request . send ( ) ;
611+ } catch ( error : any ) {
612+ // ...low-level fetch error (missing host, bad SSL, etc.),
613+ // so try next URL
614+ errorMessages . push ( error . message ) ;
615+ this . emit ( "debug" , { action : "receiveCcipReadFetchError" , request, result : { error } } ) ;
616+ continue ;
617+ }
618+
619+ try {
620+ const result = resp . bodyJson ;
621+ if ( result . data ) {
622+ this . emit ( "debug" , { action : "receiveCcipReadFetchResult" , request, result } ) ;
623+ return result . data ;
624+ }
625+ if ( result . message ) { errorMessage = result . message ; }
626+ this . emit ( "debug" , { action : "receiveCcipReadFetchError" , request, result } ) ;
616627 } catch ( error ) { }
617628
618629 // 4xx indicates the result is not present; stop
0 commit comments