@@ -42,7 +42,7 @@ import {
42
42
43
43
import type { Addressable , AddressLike } from "../address/index.js" ;
44
44
import type { BigNumberish , BytesLike } from "../utils/index.js" ;
45
- import type { Listener } from "../utils/index.js" ;
45
+ import type { FetchResponse , Listener } from "../utils/index.js" ;
46
46
47
47
import type { Networkish } from "./network.js" ;
48
48
import type { FetchUrlFeeDataNetworkPlugin } from "./plugins-network.js" ;
@@ -604,15 +604,26 @@ export class AbstractProvider implements Provider {
604
604
605
605
let errorMessage = "unknown error" ;
606
606
607
- const resp = await request . send ( ) ;
607
+ // Fetch the resource...
608
+ let resp : FetchResponse ;
608
609
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 } ) ;
616
627
} catch ( error ) { }
617
628
618
629
// 4xx indicates the result is not present; stop
0 commit comments