Подходит ли async / await для методов, связанных как с IO, так и с CPU?

В документации MSDN говорится, чтоasync а такжеawait подходят для задач, связанных с IO, тогда какTask.Run следует использовать для задач, связанных с процессором.

Я работаю над приложением, которое выполняет HTTP-запросы для получения документов HTML, которые затем анализирует. У меня есть метод, который выглядит так:

public async Task LoadPage(Uri address)
{
    using (var httpResponse = await new HttpClient().GetAsync(address)) //IO-bound
    using (var responseContent = httpResponse.Content)
    using (var contentStream = await responseContent.ReadAsStreamAsync())
        return await Task.Run(() => LoadHtmlDocument(contentStream)); //CPU-bound
}

Это хорошее и подходящее использованиеasync а такжеawaitили я переусердствовал?

Ответы на вопрос(3)

Ваш ответ на вопрос