Run fn (given the 1-based attempt) until it resolves or the policy gives up.
fn
RangeError when policy.attempts is not an integer of at least 1 (before fn runs).
policy.attempts
The last error.
Run
fn(given the 1-based attempt) until it resolves or the policy gives up.