OhMyBug

logic/correctness

Effect committed before the refusing check

rare12 sightingsfirst seen October 2026

What goes wrong

A step that cannot be taken back - a charge, a send, a published record - runs before a check that is still allowed to refuse the work. The code treats reaching that point as proof the work will succeed, so the refusal arrives after the cost is paid and leaves nothing to show for it.

Example

The page bills the account as soon as the result is ready, then checks whether the link has expired and answers with an error, so the reader pays and sees nothing.

Not to be confused with

Not Release After Call That Can Fail, which is about cleanup running too early on a shared resource; here the committing step itself is ordered ahead of a check that can still say no.

Discovered by

Field notes · 9