Eu não sei se entendi bem a sua dúvida, mas irei explicar pelo o que eu acredito que seja.
Você mencionou sobre o fato de funções sem await
serem executadas de forma sincrona, e mostrou um exemplo meu que não tem await
, mas retorna uma promise.
Explicação: uma função assíncrona sempre vai embrulhar o retorno em uma promise
. É importante enfatizar o "embrulhar". Embrulhar em uma promise, não é uma operação assíncrona, e sim síncrona. Então com ou sem await
vai retornar uma promize pois o valor foi "embrulhado". Embrulhar é apenas pegar o valor de retorna e transformar aquele valor numa Promise.
A questão das funções sem await
se comportar como funções regulares (síncrona) é apenas na execução. Então sem await
, é como uma função regular, mas que embrulha numa Promise. O await
é para garantir que todo o resto do escopo abaixo de onde esta o 'await', deva esperar. Isso é controlado pelo o Event Loop, que gerencia operações assíncronas concorrentemente.
Não sei se era sua dúvida, mas estou sempre a disposição no que precisar.