Definindo uma função como async, podemos utilizar a palavra-chave await antes de qualquer expressão que retorne uma promessa. Dessa forma, a execução da função externa (a função async) será pausada até que a Promise seja resolvida.
A palavra-chave await recebe uma Promise e a transforma em um valor de retorno (ou lança uma exceção em caso de erro). Quando utilizamos await, o JavaScript vai aguardar até que a Promise finalize. Se for finalizada com sucesso (o termo utilizado é fulfilled), o valor obtido é retornado. Se a Promise for rejeitada (o termo utilizado é rejected), é retornado o erro lançado pela exceção.
Preciso colocar await em todas as funções dentro de uma função async?
R: Sim você vai colocar o await em todas funções que tiverem o async...
Caso ainda não esteja claro você pode acessar esse link da Alura e ler um pouco mais sobre...https://www.alura.com.br/artigos/async-await-no-javascript-o-que-e-e-quando-usar
Espero ter ajudado ...