Olá Carlos!
Ótima pergunta! O operador await é usado para aguardar a conclusão de uma operação assíncrona antes de continuar a execução do código. No exemplo que você mostrou, o await é utilizado para aguardar a conclusão da requisição HTTP antes de prosseguir com a execução do código.
No entanto, é importante ter cuidado ao utilizar o método Result em uma operação assíncrona, como no exemplo que você mostrou. O uso do Result bloqueia a execução do código até que a operação seja concluída, o que pode levar a problemas de desempenho e até mesmo a bloqueios no aplicativo.
Uma alternativa mais recomendada é utilizar o operador await juntamente com o método GetStringAsync de forma assíncrona, como no exemplo a seguir:
using (HttpClient client = new HttpClient())
{
string response = await client.GetStringAsync("https://guilhermeonrails.github.io/api-csharp-songs/songs.json");
}
Dessa forma, o código irá aguardar a conclusão da requisição de forma assíncrona, sem bloquear o fluxo do programa. Isso permite que outras operações possam ser executadas enquanto a requisição está em andamento, melhorando a responsividade do aplicativo.
Espero ter ajudado e bons estudos!