From f64d46ccbafbc5f5e676e26616b186df84691ea8 Mon Sep 17 00:00:00 2001 From: LewisB Date: Mon, 10 Aug 2026 14:24:56 +0700 Subject: [PATCH] fix: rpc fallback needs to check both exception and nested error --- src/server/blockchain/transport.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/server/blockchain/transport.js b/src/server/blockchain/transport.js index a76483b8..0a11f3d9 100644 --- a/src/server/blockchain/transport.js +++ b/src/server/blockchain/transport.js @@ -109,7 +109,12 @@ export class MultipleHttpProvider extends HttpProvider { const { message, error, code } = exception const errorMessage = exception?.error ? JSON.stringify(exception?.error) : exception.message const txError = isTxError(errorMessage) - const conError = isConnectionError(error) + // Web3 reports malformed/empty provider responses as the exception + // itself (for example: "Invalid JSON RPC response"). RPC errors, + // however, are exposed through the nested `error` property. Check both + // so a failing provider does not prevent the remaining endpoints from + // being tried. + const conError = isConnectionError(error || exception) // retry if not tx issue and network error or if rpc responded with error (error.error) const willFallback = !txError && !!(code || error || !message || conError)