Error handling and recovery
Retry loop without backoff or limit
A failing call is retried immediately and indefinitely, turning one outage into a flood.
Termsfault injection (making a dependency fail on purpose in staging to see what the user and the logs show) · API (the interface other software calls; tested directly, without the UI in between) · webhook (a message a provider such as Stripe sends to your server when something happens, like a payment)
mediumseverity if found in a releasesources verified 2026-09-21
Why AI-assisted code produces it
Retries are generated as a loop around the call; the limit and the delay are the parts a prompt rarely specifies. Stripe's duplicate-delivery note shows why retried side effects also need idempotency.
In the same 470-pull-request sample, cross-site scripting issues were up to 2.74 times more frequent in AI-co-authored pull requests; error-handling gaps were nearly 2 times more common and logic and correctness issues 75% more common.
Source: CodeRabbit, 2025-12-17 · verified 2026-09-21
Stripe signs every webhook event; without verification an attacker could send fake events to trigger order fulfilment or grant access. Official libraries reject events older than 5 minutes by default, endpoints may receive the same event more than once, and Stripe does not promise delivery order.
Source: Stripe docs, 2026-09 · verified 2026-09-21
How we detect it
Stall a dependency and count outbound requests per minute.
Checklist items that catch it
External calls have timeouts and bounded retries
manual Review each outbound call site for a timeout and a retry limit; confirm with a stalled-endpoint test.
Every outbound call has a timeout under 30 seconds and at most 3 retries with backoff, or a documented exception.
Dots: Starter, Growth, Scale. The item runs on every release for the plans marked.
More in error handling and recovery
- high
- medium
- medium
- medium
- medium
Check your codebase for this pattern
The coverage audit lists which catalogue patterns apply to your critical flows. 5 business days, $1,200, credited to a first month.