title: HttpClient GetAsync fails randomly
body: <p>I am using .net HTTPClient across multiple multithreaded consumers making GetAsync web requests to a local service at 127.0.0.1 once per second.</p>
  
  <p>The web requests complete 99.9% of the time but occasionally a few requests (over a 3-4 hour period)  will get stuck in the GetAsyc and will not complete or timeout. Requests to the same service url/port in the same time period will work fine and new requests will complete fine.</p>
  
  <p>The GetAsync is being fired off in a fire and forget mode where a callback is called on completion to handle the resulting parsed data (as it is integrated with some older code that doesn't use async.)</p>
  
  <pre><code>public void Execute(Action&lt;IAsyncCommand&gt; onCompletion)
  {
      this.onAsyncCompletion = onCompletion;
      try
      {
         // do not await as this is fire and forget
         this.HandlRequestAysnc(this.Target, new StringContent(this.CommandPayload));
          return;
      }
      catch(Exception e)
      {
        //log exception
      }
   }
  private async Task HandlRequestAysnc(Uri uri, StringContent stringContent)
  {
      try
      {
          ConfiguredTaskAwaitable&lt;HttpResponseMessage&gt; request = stringContent != null ? webClient.PostAsync(uri, stringContent).ConfigureAwait(false) : webClient.GetAsync(uri).ConfigureAwait(false);
          //this will never return or timeout 1 in 10000 times
          using (HttpResponseMessage response = await request) 
          {
              if (response.IsSuccessStatusCode)
              {
                  using (HttpContent content = response.Content)
                  {
                      string result = await content.ReadAsStringAsync(); 
                      //handle result
                  }
              }
              else
              {
               //handle failure
              }
          }
      }
      catch (Exception ex)
      {
           //log exception
      }
      if (this.onAsyncCompletion != null)
      {
          this.onAsyncCompletion(this);
      }
  }
  </code></pre>