Що насправді відбувається при `await` для `Task`?
Компілятор переписує метод у скінченний автомат: код до await виконується синхронно, а якщо задача ще не завершена, метод одразу віддає керування виклику й звільняє потік замість блокування. Продовження відновлюється, коли задача завершиться, за замовчуванням у захопленому SynchronizationContext, тому бібліотечний код викликає ConfigureAwait(false), щоб уникнути дедлоків і зайвих перемикань контексту.