Run attempt (a fresh single PUT / stream each call) with exponential
backoff, retrying only failures isRetryable accepts and only while the
deadline budget allows. On a retryable failure it logs (via describeRetry
logger), sleeps, doubles the backoff (clamped to maxDelayMs), then runs
the optional checkpoint before re-attempting. Non-retryable failures — and
the last failure once the budget is exhausted — are rethrown unchanged, so
each call site keeps its own error type/shape.
Run
attempt(a fresh single PUT / stream each call) with exponential backoff, retrying only failuresisRetryableaccepts and only while thedeadlinebudget allows. On a retryable failure it logs (viadescribeRetrylogger), sleeps, doubles the backoff (clamped tomaxDelayMs), then runs the optionalcheckpointbefore re-attempting. Non-retryable failures — and the last failure once the budget is exhausted — are rethrown unchanged, so each call site keeps its own error type/shape.