Use async for I/O, not as a substitute for CPU parallelism
Use async to avoid blocking while I/O is in flight, and treat CPU parallelism as a separate measured design decision.
Use async to avoid blocking while I/O is in flight, and treat CPU parallelism as a separate measured design decision.
Prefer Task unless you have a measured allocation reason and a simple consumption contract.
If work can fail, give it ownership, logging, cancellation, and a lifecycle.
Create unrelated asynchronous operations first, then await them together.