Implementing asynchronous web service clients