How Should I Run This Work?
Answer questions about the work — what it does, what it waits on, what it shares — never about an API. You arrive at an execution model together with its trade-offs, the ways it fails, and the simpler thing to consider first. All four are shown, always.
Four different failures look identical from outside — the work stopped. They are distinguished by two readings: whether the CPU is busy, and whether *anything* is completing. Take both before forming a theory.
What is the CPU doing?
How to answer honestly · Look at per-core utilization, not the average. Then take a thread dump or async task dump and count how many are running versus waiting or blocked.