Both asynchronous page approach and asynchronous PreRequestHandler execution approach make the response data of a Web service call available before a page is initialized. So both approaches work if you load a new page, or click on a hyperlink, or a LinkButton. How to deal with control events such as button click events? Say, you click on a button. The action that you need to do is to make several lengthy Web service calls and use the response data from the calls in the button click event handler. As you can see, it is too late to start either approach in the button click event handler.
If the event that you need to handle is a server control event, then you are able to use both approaches. The reason is that you are able to detect the event and the data associated with the event at either the BeginProcessRequest call or a BeginEventHandler call because the event is a server control event. The following is the code to detect a button click event.
With this code, I do make the response data of a Web service call available in the button click event handler.