Start here. This is the direct spoken answer to practice first.
Why this question matters
A retry can recover a brief transient failure, but it also multiplies traffic during the exact moment a dependency has the least spare capacity.
I would retry only failures that are plausibly transient, such as a connection reset, selected timeouts, 429, or some 5xx responses. Validation errors, authentication failures, and deterministic business rejections should not be retried. Attempts must be few, bounded by the remaining deadline, and delayed with exponential backoff plus jitter so callers do not retry in lockstep. Side effects require an idempotency key or another durable deduplication boundary before automatic retry is safe.