The Task-based Asynchronous Pattern