Qualquer maneira de diferenciar Cancelar e Tempo limite

Eu tenho algum código que está validando alguns dados fazendo chamadas para vários outros serviços. Inicio todas as chamadas em paralelo e espero até que pelo menos uma delas termine. Se alguma das solicitações falhar, não me importo com o resultado das outras chamadas.

Eu faço as ligações comHttpClient e eu passei umHttpMessageHandler nisso faz um monte de registro. Essencialmente:

protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
    HttpResponseMessage response = null;

    try
    {
        response = await base.SendAsync(request, cancellationToken);
    }
    catch (OperationCanceledException ex)
    {
        LogTimeout(...);
        throw;
    }
    catch (Exception ex)
    {
        LogFailure(...);
        throw;
    }
    finally
    {
        LogComplete(...);
    }

    return response;
}

Não, a parte com a qual estou tendo problemas é quando cancelo as solicitações. Quando cancelo uma solicitação, faço-a de propósito; portanto, não quero que ela seja registrada como um tempo limite, mas não parece haver nenhuma diferença entre um cancelamento e um tempo limite real.

Existe alguma maneira de conseguir isso?

Editar: Eu preciso esclarecer isso um pouco. O serviço que faz as chamadas em paralelo está passando em CancellationTokens com um tempo limite:

var ct = new CancellationTokenSource(TimeSpan.FromSeconds(2));

Portanto, quando o servidor leva mais de dois segundos para responder, recebo umaOperationCanceledExceptione se eu cancelar manualmente a fonte do token (digamos, porque outro servidor retornou um erro após 1 segundo), ainda recebo umOperationCanceledException. Idealmente, eu seria capaz de olharCancellationToken.IsCancellationRequested para determinar se foi cancelado devido a um tempo limite, em vez de explicitamente solicitar o cancelamento, mas parece que você obtém o mesmo valor, independentemente dequão foi cancelado.

questionAnswers(2)

yourAnswerToTheQuestion