Bounding a wait does not prove the peer’s state
A caller can bound connection, read, or whole-request waiting, but must identify the covered phase. Connection establishment differs from receiving a business result, and some low-level timeout options do not include DNS or TLS work.
A timeout establishes only that the required result was not obtained within its scope. A peer may not have started, may still be working, or may have finished without its response arriving. Retrying effects therefore requires appropriate semantics rather than assuming nothing happened.
References: [1]
Ending a wait need not cancel execution
Python concurrent.futures.Future.result can raise TimeoutError after a bounded wait, while cancellation is separate and a running call may not be cancellable through Future.cancel. A departing waiter does not settle the background work’s lifetime.
Go WithTimeout creates a deadline-bearing context that signals cancellation to operations using it; those operations must observe and cooperate. Timing out, requesting cancellation, and confirming cleanup are related but separate steps.
Deadlines and retries jointly affect load
Long timeouts retain resources, while overly short ones can mistake ordinary slow responses for failures and create retries. Useful settings account for latency variation, connection reuse, and other waiting budgets in the call chain.
Immediate retries during overload can worsen the cause of failure. Amazon discusses bounded retries, backoff, and jitter to distribute attempts. A timeout policy therefore governs resource use and recovery, not merely a timer followed by another identical request.
References: [1]