¿Por qué es HttpContext.Current nulo después de esperar?

Tengo el siguiente código de prueba de WebAPI, no uso WebAPI en producción, pero hice esto debido a una discusión que tuve sobre esta pregunta:WebAPI Async question

De todos modos, aquí está el método ofensivo de WebAPI:

public async Task<string> Get(int id)
{
    var x = HttpContext.Current;
    if (x == null)
    {
        // not thrown
        throw new ArgumentException("HttpContext.Current is null");
    }

    await Task.Run(() => { Task.Delay(500); id = 3; });

    x = HttpContext.Current;
    if (x == null)
    {
        // thrown
        throw new ArgumentException("HttpContext.Current is null");
    }

    return "value";
}

Creía que se esperaba la segunda excepción porque cuando elawait completa, probablemente estará en un hilo diferente dondeHttpContext.Current como una variable subproceso-estática ya no se resolverá al valor apropiado. Ahora, en función del contexto de sincronización, en realidad podría verse obligado a volver al mismo hilo después de la espera, pero no estoy haciendo nada sofisticado en mi prueba. Esto es solo un uso simple e ingenuo deawait.

En comentarios en otra pregunta me dijeron queHttpContext.Current debe resolver después de una espera. Incluso hay otro comentario sobre esta pregunta que indica lo mismo. Entonces, ¿qué es verdad? ¿Debe resolverse? Creo que no, pero quiero una respuesta autorizada sobre esto porqueasync yawait Es lo suficientemente nuevo como para no encontrar nada definitivo.

TL; DR: esHttpContext.Current potencialmentenull después de unawait?

Respuestas a la pregunta(3)

Su respuesta a la pregunta