OhMyBug

concurrency/state

Timeout Read As Definite Failure

#58rare10 sightingsfirst seen September 2026

What goes wrong

A timeout, cancellation or lost reply arrives after the other side may already have committed, and the sender treats it as proof that nothing happened: it compensates, rolls back its own state or tells the user 'failed'. If the effect did land, both the effect and the reversal (or the repeat) stand.

Example

The call to the payment provider times out; the shop shows 'payment failed' and the customer pays again — but the first charge had gone through, so they are billed twice.

Not to be confused with

The outcome was never checked against durable state; not a cancellation swallowed and turned into a fallback (Swallowed Cancellation) and not a client that loses its retry key (Forgotten Retry Identity).

Discovered by

Field notes · 7