Dlaczego HttpContext.Current null po oczekiwaniu?

Mam następujący testowy kod WebAPI, nie używam WebAPI w produkcji, ale zrobiłem to z powodu dyskusji, którą miałem na ten temat:Pytanie asynchroniczne WebAPI

Tak czy inaczej, oto obraźliwa metoda 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";
}

Wierzyłem, że drugi wyjątek jest oczekiwany, ponieważ kiedyawait kończy się, prawdopodobnie będzie w innym wątkuHttpContext.Current jako zmienna statyczna wątku nie będzie już rozpoznawana do odpowiedniej wartości. Teraz, w oparciu o kontekst synchronizacji, w rzeczywistości może być zmuszony do powrotu do tego samego wątku po oczekiwaniu, ale nie robię nic ciekawego w moim teście. To zwyczajne, naiwne użycieawait.

W komentarzach do innego pytania powiedziano mi toHttpContext.Current powinien rozwiązać po oczekiwaniu. Jest jeszcze inny komentarz na to pytanie, wskazujący na to samo. Więc co jest prawdą? Czy to powinno rozwiązać? Myślę, że nie, ale chcę na to autorytatywnej odpowiedzi, ponieważasync iawait jest na tyle nowy, że nie mogę znaleźć niczego ostatecznego.

TL; DR: IsHttpContext.Current potencjalnienull poawait?

questionAnswers(3)

yourAnswerToTheQuestion