Я вроде бы помню читал что типа таски проверяют метод исполнится ли быстро, если быстро то метод выполняется в том же потоке, если долго то метод выполняется в пуле
Короче дотнеты не всегда прерывают выполнение таски на await. Он не прерывает только в том случае если последующий за await метод не может выполнится синхронно. У тебя считай есть метод который проваливается в глубь через сотни await. Они могут выполнятся один за другим.
Потому что асинхронность это не только async await и Task<T>. Асинхронность нужная для удаленных вызовов, удаленных выполнений транзакций (база) и асинхронных IO операций