3. Video - You can wrap events up in Task-returning APIs and await them. This can dramatically simplify code.
Mads Torgersen: Inside C# Async (with video)
http://channel9.msdn.com/Shows/Going+Deep/Mads-Torgersen-Inside-C-Async
Should I expose asynchronous wrappers for synchronous methods?