Asynchronous programming is frustrating to get a handle on, at first