Why retrying a request after a network timeout is completely harmless against some endpoints and genuinely dangerous against others — and it has nothing to do with whether the endpoint is "read-only."
Ask what "idempotent" means and you'll usually hear "safe" or "read-only" — neither is right, and the imprecision matters because idempotency is the exact property that decides whether an automatic retry is harmless or dangerous. An operation is idempotent when calling it once and calling it ten times land you in the exact same end state— not when it does nothing, and not when it merely "seems safe." "Set the account balance to $100" is idempotent: run it any number of times and the balance is $100. "Add $100 to the account balance" is not: run it twice and the balance has gone up by $200. That single distinction is why some retries are trivially safe and others can double-charge a customer or create duplicate orders.