Спасибо за оперативный развернутый ответ.
Когда синхронная задача ждёт данных, она не занимает процессорное время. Поток уходит в ядро ОС и диспетчер потоков переключается на другой поток или уводит процессорное ядро в режим ожидания.
Тут я слегка не понял - если при вызове синхронного метода осуществляется ожидание "без потерь", то зачем тогда вся эта асинхронность, ведь и так все отлично? Зачем тогда придумали async/await?