diff --git a/apps/fortuna/src/chain/nonce_manager.rs b/apps/fortuna/src/chain/nonce_manager.rs index b6e93a00e2..de87d5a5ad 100644 --- a/apps/fortuna/src/chain/nonce_manager.rs +++ b/apps/fortuna/src/chain/nonce_manager.rs @@ -82,7 +82,7 @@ where Ok(nonce) } // guard dropped here - pub async fn reset(&self) { + pub fn reset(&self) { self.initialized.store(false, Ordering::SeqCst); } diff --git a/apps/fortuna/src/keeper.rs b/apps/fortuna/src/keeper.rs index 033e753394..8cca89d9e9 100644 --- a/apps/fortuna/src/keeper.rs +++ b/apps/fortuna/src/keeper.rs @@ -493,28 +493,25 @@ pub async fn process_event( )) })?; - let optional_receipt = pending_tx.await.map_err(|e| { - backoff::Error::transient(anyhow!( - "Error waiting for transaction receipt. Tx:{:?} Error:{:?}", - transaction, - e - )) - })?; - - - let receipt = match optional_receipt { - Some(receipt) => receipt, - None => { + let receipt = pending_tx + .await + .map_err(|e| { + backoff::Error::transient(anyhow!( + "Error waiting for transaction receipt. Tx:{:?} Error:{:?}", + transaction, + e + )) + })? + .ok_or_else(|| { // RPC may not return an error on tx submission if the nonce is too high. // But we will never get a receipt. So we reset the nonce manager to get the correct nonce. let nonce_manager = contract.client_ref().inner().inner(); - nonce_manager.reset().await; - return Err(backoff::Error::transient(anyhow!( + nonce_manager.reset(); + backoff::Error::transient(anyhow!( "Can't verify the reveal, probably dropped from mempool Tx:{:?}", transaction - ))); - } - }; + )) + })?; tracing::info!( sequence_number = &event.sequence_number,