Asynchronous Programming in .NET – Task-based Asynchronous Pattern (TAP)