Задача и поток в C#
Ожидание не открывает новый поток на каждый шаг. Пока задача не готова, текущий поток свободен для другой работы. Продолжение потом берёт любой свободный поток из пула.
Номер этого потока до паузы и после неё может не совпасть. Код не обязан вернуться именно в тот поток, где остановился.
Сравним номер потока до короткой паузы и после неё:
Console.WriteLine(Environment.CurrentManagedThreadId);
await Task.Delay(10);
Console.WriteLine(Environment.CurrentManagedThreadId);
Сделайте паузу в одну секунду и выведите 1, если номер потока до паузы и после неё различается.