# Polly → do-over Migration Guide
| RetryAsync | RetryPolicy |
| CircuitBreakerAsync | CircuitBreaker |
| TimeoutAsync | TimeoutPolicy |
| BulkheadAsync | Bulkhead |
| Policy.WrapAsync | Wrap |
| Exceptions | Result<T, E> |
## Key Differences
- Errors are explicit, typed, and composable
- No hidden retries or background work
- Async execution is enforced at compile time
### Example
C#:
```
Policy.Handle<HttpRequestException>()
.RetryAsync(3)
.ExecuteAsync(() => client.GetAsync(url));
```
Rust:
```
}).await
```