title: .NET HttpClient doesn't reuse tcp connections for parallel requests
body: <p>I have the following nodejs server. It serves only json on HTTP and records whenever a new tcp connection is established:</p>
  
  <pre><code>var http = require('http');
  
  var response = [{"name":"Alice"},{"name":"Bob"}];
  var count=0;
  http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/json'});
    res.end(JSON.stringify(response));
  }).on('connection', function(socket) {
    console.log('new TCP stream is established ' + count)
    count++;
    socket.setTimeout(5000);
  }).listen(5000);
  </code></pre>
  
  <p>I query this server with the following C# program that starts 10 http requests and doesn't wait for their response</p>
  
  <pre><code>//to check connection reuse across processes
  Console.WriteLine("ProcessID " + Process.GetCurrentProcess().Id);
  
  HttpClient client = new HttpClient();
  client.BaseAddress = new Uri("http://mypc.domain.com:5000");
  
  for (int i = 0; i &lt; 10; i++)
  {
      var result = client.GetAsync("/"); // or client.GetAsync("/").Result
      Console.Writeline("requested " + i);
  }
  </code></pre>
  
  <p>When I run it I see the following output:</p>
  
  <p>new TCP stream is established 0<br>
  .<br>
  .<br>
  new TCP stream is established 9</p>
  
  <p>It created 10 tcp connections.</p>
  
  <p><s>Now when I run the C# program in quick succession (under the 5 second timeout set on the server). I don't see any new TCP connections being created. The 10 new requests reuse the TCP connections from the previous run.</s></p>
  
  <p>Is there a way to have HttpClient only create and reuse one TCP connection for parallel requests?<br>
  Is it possible to make parallel requests over the same TCP connection at all?</p>