Хорошей практикой программирования считается вызывать ConfigureAwait в базовых «библиотечных» методах и возобновлять контекст только тогда, когда потребуется — в ваших внешних методах «пользовательского интерфейса».
Ключевое слово async добавляется в объявление метода и имеет двойное назначение: оно разрешает использование ключевого слова await внутри этого метода и приказывает компилятору сгенерировать для этого метода конечный автомат по аналогии с тем, как работает yield return.
Реактивное программирование
Декларативный стиль программирования, при котором приложение реагирует на события.