Retries change load.
One browser request can become several downstream calls, even when every call returns nothing useful.
Lab tool / simulated request path
One request, seven layers, and a handful of switches. Change retries, deadlines, cache behaviour, rate limits, and service errors, then watch the path explain itself.
01 / Simulator
The main instrument stays in one working surface: scenario tabs first, live trace in the middle, switches underneath, and the run summary close enough to compare without hunting.
Seeded extra latency across the path.
Refuse before downstream work.
Deadline is per attempt; backoff is visible on the API hop.
Return 503 before reading anything.
Fast answers can still be wrong answers.
02 / What this proves
A failed request is not a single red light. It is a path through owned layers: where the deadline is spent, where retries multiply load, where cache hides truth, and where a refusal prevents damage.
One browser request can become several downstream calls, even when every call returns nothing useful.
A per-attempt deadline can keep individual attempts bounded while the whole request still drifts over budget.
A stale cache hit looks cheap on latency and expensive on truth. That distinction matters.
The same trace without the animation. This is the accessible equivalent of the diagram and the fastest way to audit a run.
| # | Layer | Attempt | Outcome | Latency | Note |
|---|
Pin the current configuration, change the switches, and read the two runs side by side.
Nothing pinned yet.
This page does not call a real service. The latency model is deliberate, repeatable, and documented so a permalink reproduces the same experiment instead of rolling new data.
Read the latency model