An async function is a state machine
Calling an async function creates a future; work advances only while that future is polled. Dropping it stops future polling, but side effects completed before the last suspension point remain completed.
rust / LEVEL 4
THEORY / RETRIEVAL
Calling an async function creates a future; work advances only while that future is polled. Dropping it stops future polling, but side effects completed before the last suspension point remain completed.
A retry helper must define whether the number means total attempts or retries after the first call. Using `NonZeroUsize` makes an impossible zero-attempt result unrepresentable when no error value exists yet.
CHECKPOINT
02 / IMPLEMENTATION
Implement `retry` so `attempts` means total calls, success returns immediately, and the final error is returned after the exact budget. Do not require Clone on errors.
Runner is waiting for a submission.