Start here. This is the direct spoken answer to practice first.
Why this question matters
Explain why async void is usually dangerous outside event handlers and how exceptions behave differently. It matters in real backend work because load, cancellation, retries, and dependency latency decide whether the API stays predictable under pressure. The practical angle is async exception flow, event handlers, testability, unobserved failures, and API design, tied to a concrete production decision.
I avoid async void because the caller cannot await completion, compose the operation, or observe its exceptions through a returned task. Normal async methods return Task or Task<T>. The main exception is an event handler whose delegate requires void; even there, I keep the real operation in a task-returning method so it remains testable and reusable.