HttpClient ao usar a instrução causa a tarefa cancelada

Eu criei umFileResult : IHttpActionResult tipo de retorno webapi para minhas chamadas api. O FileResult baixa um arquivo de outro URL e retorna o fluxo ao cliente.

Inicialmente, meu código tinha umusing declaração como abaixo:

public async Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken)
{
    try
    {
        HttpResponseMessage response;
        using (var httpClient = new HttpClient())
        {

            response = new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content = new System.Net.Http.StreamContent(
                                    await httpClient.GetStreamAsync(this.filePath))
            };
        }
        return response;
    }
    catch (WebException exception)
    {...}
}

No entanto, isso causaria intermitentemente umaTaskCanceledException. Sei que se o HttpClient for descartado antes do término da chamada assíncrona, o estado da tarefa mudará para cancelado. No entanto, desde que eu uso umaguardam&nbsp;no:Content = new System.Net.Http.StreamContent(await httpClient.GetStreamAsync(this.filePath))&nbsp;isso deve impedir que o HttpClient seja descartado no meio da conclusão da tarefa.

Por que essa tarefa é cancelada?&nbsp;Não é devido a um tempo limite, pois isso ocorreu nas solicitações menores e nem sempre ocorre em solicitações grandes.

Quando eu removi ousing&nbsp;declaração o código funcionou corretamente:

public async Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken)
{
    try
    {
        HttpResponseMessage response;
        var httpClient = new HttpClient();

        response = new HttpResponseMessage(HttpStatusCode.OK)
        {
            Content = new System.Net.Http.StreamContent(
                                await httpClient.GetStreamAsync(this.filePath))
        };
        return response;
    }
    catch (WebException exception)
    {...}
}

Alguma idéia de por que o uso causou o problema?