One can also use custom macros C# / VB.NET: async and await: "sign up the rest of method as the continuation, and then return to your caller immediately; the task will invoke the continuation when it completes."