diff --git a/server-rs/crates/platform-tripo/src/common/client.rs b/server-rs/crates/platform-tripo/src/common/client.rs index b0b8e558d..5c31a5bcc 100644 --- a/server-rs/crates/platform-tripo/src/common/client.rs +++ b/server-rs/crates/platform-tripo/src/common/client.rs @@ -74,20 +74,18 @@ impl TripoProviderClient { url: &TripoUrl, ) -> Result { let total_attempts = self.artifact_retries.saturating_add(1); - let mut last_error = None; + let mut attempt = 1; - for attempt in 1..=total_attempts { + loop { match self.download_artifact_once(task_id, url).await { Ok(downloaded) => return Ok(downloaded), Err(error) if attempt < total_attempts && error.is_retryable() => { - last_error = Some(error); tokio::time::sleep(download_backoff(attempt)).await; + attempt += 1; } Err(error) => return Err(error), } } - - Err(last_error.expect("artifact download has at least one attempt")) } async fn download_artifact_once(