Renamed WhenAsync to AsyncWhen to try to make it clear that when does not return an anync task