We all try to make our code modular and reusable. But when it comes to reusable async code there are some special concerns and best-practices. The code shouldn’t lie—if its name and signature are async, then it shouldn’t block or use CPU resources. The code should be agnostic about its threading environment, and usually needs ConfigureAwait to achieve this. The code might be used from perf-sensitive code, and there are some handy ways to optimize the common case. These principles evolved into internal guidance at Microsoft for how we developed the Microsoft .NET Framework 4.5. In this session, learn our guidance, and leave with the knowledge of how to apply it to your own projects.