public override IAsyncResult BeginGetResponse (AsyncCallback callback, object state)
{
// Console.WriteLine ("{0} {1} {2}", GetType (), method, uri);
// we're not allowed to reuse an aborted request
if (IsAborted)
throw new WebException ("Aborted", WebExceptionStatus.RequestCanceled);
// under SL the callback MUST call the EndGetResponse, so having no callback is BAD
// this also means that faking a synch op using EndGetReponse(BeginGetReponse(null,null)) does NOT work
if (callback == null)
throw new NotSupportedException ();
// we cannot issue 2 requests from the same instance
if (async_result != null)
throw new InvalidOperationException ();
// this is the "global/total" IAsyncResult, it's also the public one
async_result = new HttpWebAsyncResult (callback, state);
GetResponse (this.Method, uri, true);
return async_result;
}