Every request opens with one word, and that word makes a promise about what happens if it gets sent twice.
HTTP method
Also called HTTP verb, GET and POST
The verb at the start of a request. GET reads, POST creates or submits, PUT replaces, DELETE removes. The method also tells everything between you and the server whether it's safe to send the same request again.
Requests get repeated, by double taps, flaky networks and helpful retry code. An agent that uses GET for an action can have it fired by a link preview, and one that writes a plain POST checkout can charge someone twice. Neither shows up in a test where everything goes right.
“This checkout POST can run twice if the user double-taps. Require an Idempotency-Key header, store the first response against that key for 24 hours, and add a test that sends the same key twice and gets one order and one charge.”