public override WebResponse EndGetResponse (IAsyncResult asyncResult)
{
if (asyncResult == null)
throw new ArgumentNullException ("asyncResult");
WebAsyncResult result = asyncResult as WebAsyncResult;
if (result == null)
throw new ArgumentException ("Invalid IAsyncResult", "asyncResult");
if (!result.WaitUntilComplete (timeout, false)) {
Abort ();
throw new WebException("The request timed out", WebExceptionStatus.Timeout);
}
if (result.GotException)
throw result.Exception;
return result.Response;
}