A hung call holds its slot and returns nothing. The run waits and the resources it reserved stay reserved. No error arrives to trigger the handling that a failure would.
A deadline converts the hang into a failure the system can act on. The runtime cancels the call, releases the slot, and the run retries, routes to another model, or escalates.
An error arrives quickly and carries information. Retry logic runs, a fallback fires, and the slot is returned. A hang produces none of that. The call stays open and the caller stays blocked. From outside the system looks healthy, because nothing has failed yet.
Under load the effect compounds. Each hung call holds capacity that queued work needs, the queue grows, and the growth produces more calls that hang for the same reason.
Backpressure and deadlines solve adjacent halves of the same problem. Backpressure stops a fast producer from overwhelming a slow consumer. Deadlines stop a consumer that has stopped responding from holding capacity indefinitely.
Backpressure and deadlines are properties of the runtime executing the work. A library wrapped around the call can time out its own wait and cannot release what the runtime is holding.
Short enough that a hung call does not consume the budget of the run containing it, and long enough to let a slow response finish. The figure comes from the observed latency distribution.
A retry is safe when the runtime recorded whether the call executed. Without that record the retry may repeat an action that already happened.
A deadline that fires on one provider can route the retry to another. The policy that chooses the model already exists, so the failure becomes a routing decision.
A health check asks whether the provider is up. A deadline asks whether this call is still worth waiting for. A provider can pass its health check while individual calls hang.