Skip to content

Commit bf58e27

Browse files
committed
ref: try_operation_with_failover
1 parent 5198b1c commit bf58e27

File tree

1 file changed

+6
-9
lines changed

1 file changed

+6
-9
lines changed

src/robust_provider/provider.rs

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ use alloy::{
99
transports::{RpcError, TransportErrorKind},
1010
};
1111
use backon::{ExponentialBuilder, Retryable};
12+
use futures::TryFutureExt;
1213
use thiserror::Error;
1314
use tokio::time::{error as TokioError, timeout};
1415
use tracing::{error, info};
@@ -325,15 +326,11 @@ impl<N: Network> RobustProvider<N> {
325326
Fut: Future<Output = Result<T, RpcError<TransportErrorKind>>>,
326327
{
327328
let primary = self.primary();
328-
let result = self.try_provider_with_timeout(primary, &operation).await;
329-
330-
if result.is_ok() {
331-
return result;
332-
}
333-
334-
let last_error = result.unwrap_err();
335-
336-
self.try_fallback_providers(&operation, require_pubsub, last_error).await
329+
self.try_provider_with_timeout(primary, &operation)
330+
.or_else(|last_error| {
331+
self.try_fallback_providers(&operation, require_pubsub, last_error)
332+
})
333+
.await
337334
}
338335

339336
pub(crate) async fn try_fallback_providers<T: Debug, F, Fut>(

0 commit comments

Comments
 (0)