Full-jitter exponential backoff. Stateless: delay is a pure function of the 0-based attempt, so the caller keeps the attempt counter (it resets naturally each retry episode). Randomness is an injected dependency — pass a seeded Random in tests for determinism.