Enterprise REST integrations rarely fail in a clean, binary way. The dominant failure modes are usually partial and ambiguous: a socket closes after a downstream system commits, a gateway returns a timeout while the target service is still processing, a throttling layer asks for a pause, or a dependency becomes slow enough that waiting callers begin to exhaust threads, connections, and ports. In that environment, simplistic catch-and-retry logic is not resilience. It is uncontrolled traffic generation. Mature error handling starts by accepting that not every failure is retryable, that the HTTP protocol already exposes useful semantics for temporary overload and replay safety, and that retry logic has to cooperate with circuit breaking, fallback paths, and telemetry rather than act on its own.