Async handler — the worker handles other work while suspended
while H1 gives up the thread on await, the worker runs H2 first, and H1 resumes when the response arrives
Guided views
Explore this system
Step through curated paths without changing the source diagram.
Beat
Next
ReadyChapter 01 / 01
Guided chapter
Diagram guideExplore this system
Inspecting compiled semantics
E ExportT ThemeS Style0 Reset+ Zoom in- Zoom outEsc Close
Find a node
⌕/
No matching nodes
Semantic passport
Verified source
Authored reach
Route probeChoose a start node
Pick two semantic nodes on the diagram
Choose the source, then the destination. Direction matters.
Semantic lensCompare system roles
Choose up to two semantic kinds. One reveals its real traffic; two compare only direct authored relationships.
Choose a kind to inspect its nodes and touching relationships.
Semantic radar
Building overview
Click nodeDrag to pan
Semantic radar needs more MAP space.
Non-blocking interleaving
• When H1 suspends at the await Request point, only that flow of execution pauses and the thread returns to the pool — it holds no thread.
• The worker immediately picks up the next work (H2) and runs it, and H2 finishes before H1's response arrives.
resume
• When the Play channel's response arrives, H1 resumes on the spot and returns.
• So a handful of workers handle huge numbers of concurrent requests with code that reads top to bottom, no callbacks. Blocking with .Result keeps the thread occupied, so it's forbidden inside a handler.