The syntax for Async / Await in C# is straightforward but the underlying mechanics are not. This deep dive will help you to understand those mechanics so you can be a true wizard with Async / Await in C#. While discussing a number of code examples we’ll touch on various topics including: Task-Based Asynchronous Programming, System.Threading.Task, ExecutionContext, Synchronization Context, ConfigureAwait, Task debugging, TaskCompletionSource and AsyncLocal.