Twisting C#'s async/await to support new use-cases