Open an interface where you can submit a user operation.
Temporarily interrupt the internet connection (e.g., in Network Conditioner, set "100% Loss" condition).
Attempt to submit the userop.
Immediately after, resume internet connectivity.
Expected: The transport should retry on network errors.
Observed: An error is thrown immediately.
Triage:
The cause of the issue is the retryCount: 0 in transport initialization^1. The default is 3.
retryCount > 0 applies only to transport errors. If the request completed with an RPC error, shouldRetry will return false and the request will not be retried.
Further, viem will obey a numeric Retry-After header value (although the backend may need to add that header to Access-Control-Request-Headers for it to be readable by client).
The use of
retryCount: 0
^1 in bundler and paymaster transports in@zerodev/sdk
results in increased user-facing errors.Steps to reproduce:
Expected: The transport should retry on network errors. Observed: An error is thrown immediately.
Triage:
retryCount: 0
in transport initialization^1. The default is 3.retryCount > 0
applies only to transport errors. If the request completed with an RPC error,shouldRetry
will returnfalse
and the request will not be retried.Retry-After
header value (although the backend may need to add that header toAccess-Control-Request-Headers
for it to be readable by client).