title: webrequest.begingetresponse is taking too much time when the url is invalid
body: <p>I am using webrequest to fetch some image data. The url may be invaild sometime. In case of invalid URL, begingetresponse is taking time equals to timeout period. Also the control become unresponsive during that period. In other word the async callback is not working asynchronously. Is this expected behaviour?</p>
  
  <pre><code>try
                                  {
                                      // Async requests 
                                      WebRequest request = WebRequest.Create(uri);
                                      request.Timeout = RequestTimeOut;
                                      RequestObject requestObject = new RequestObject();
                                      requestObject.Request = request;
                                      request.BeginGetResponse(this.ProcessImage, requestObject);
                                  }
                                  catch (Exception)
                                  {
                                      ShowErrorMessage(uri);
                                  }
  
   private void ProcessImage(IAsyncResult asyncResult)
          {            
              try
              {
                  RequestObject requestObject = (RequestObject)asyncResult.AsyncState;
                  WebRequest request = requestObject.Request;
                  WebResponse response = request.EndGetResponse(asyncResult);
  
                  Bitmap tile = new Bitmap(response.GetResponseStream());
                  // do something
              }
              catch (Exception)
              {
                  ShowErrorMessage();
              }
          }
  </code></pre>