C# Async exceptions

Tasks throw exceptions when they can’t complete successfully. The client code catches those exceptions when the await expression is applied to a started task.

When a task that runs async throws an exception, that task is faulted. The Task object holds the exception thrown. Faulted tasks throw an exception when the await expression is applied to the task.