title: HttpClient Parallel Requests Timeout using Task.WhenAll when one request times out
body: <p>i making ~20 http get requests using one httpclient, this httpclient is long living, means it is not packed into a using statement. As the webservice is normally pretty fast (response time ~200ms) i set the timeout to 5sec.</p>
  
  <p>Now i ran into the problem, if one request runs into that timeout all other requests get cancelled. Is this the normal behaviour?</p>
  
  <p>Here is the code i am using to make conccurent calls</p>
  
  <pre><code>public async Task GetAll()
  {
      await Task.WhenAll(x =&gt; x.Select(xx =&gt; GetData(xx.Id));
  }
  </code></pre>
  
  <p>Code to call the api:</p>
  
  <pre><code>    public async Task GetData(int id)
      {
          string payload = "";
          try
          {
              var resp = await base.GetAsync($"/apis/v2/getdata/{id}");
              if (!resp.IsSuccessStatusCode)
                  Console.WriteLine("Error");
  
              payload = await resp.Content.ReadAsStringAsync();
              Console.WriteLine(payload);
          }
          catch (System.Exception ex)
          {
              Console.WriteLine("Error");
          }
      }
  </code></pre>
  
  <p>My Base HttpClient Class</p>
  
  <pre><code>public class MyHttpClient : System.Net.Http.HttpClient
  {
      public Logger Log  { get; set; }
  }
  </code></pre>
  
  <p>If i run the task in sequential order everything works fine, but when i run them in parallel and one task runs into a timeout all other not finished task will be cancelled.</p>