HttpClient (C #) falha em muitas solicitações assíncronas?

Estou usando o HttpClient para fazer assincronamente muitas solicitações para uma API externa. Aguardo a conclusão de todos os pedidos e uso as respostas em outro código. Meu problema é que, se eu fizer muitas solicitações, meu código gera uma exceção quando eu uso o Task.WhenAll para aguardar.

Esse código será executado em paralelo, pelo que quero dizer que vou fazer muitos conjuntos dessas solicitações assíncronas ao mesmo tempo (ou seja, 10 conjuntos de 200 solicitações assíncronas). Instanciei um HttpClient que estou usando com o .NET 4.5 modificadores async / waitit como este:

using (var client = new HttpClient())
{
    // make a list of tasks
    List<Task<HttpResponseMessage>> taskList;
    List<MyData> replies;
    for (int i = 0; i < MAX_NUMBER_REQUESTS; i++)
    {
        taskList.Add(client.GetAsync(externalUri);
    }

    List<HttpResponseMessage> responses = await Task.WhenAll(taskList);

    // read each response after they have returned
    foreach (var response in responses)
    {
        var reader = new System.IO.StreamReader(await response.Content.ReadAsStreamAsync());
        replies.Add(JsonConvert.DeserializeObject<MyData>(reader.ReadToEnd()));
        reader.Close();
} 

    foreach (var reply in replies)
    {
        // do something with the response from the external api call...
    }
}

Eu continuo recebendo uma TaskCanceledException. Depois de analisar isso, vi que isso é possivelmente um problema de tempo limite. Não faço ideia de como consertar. Tentei agrupar minhas solicitações em 100 solicitações antes de usar o Task.WhenAll e repetir, o que funcionou. Então, quando eu executei isso em paralelo com três conjuntos de 100 solicitações que falharam. Estou faltando alguma coisa, alguém tem alguma idéia sobre isso?

questionAnswers(2)

yourAnswerToTheQuestion