Na verdade o async
/await
é não bloqueante, e mantem a asincronissidade.
Ele serve apenas como uma ferramenta para deixar seu codigo mais legível e curto.
Imagine que ele tem um ooder "bloqueante" no sentido de que a próxima linha de codigo irá executar apenas quando o evento acima (conclusão do Promise) for disparado.
Um codigo bloqueante ocupa o processamento enquanto aguarda, e é totalmente proíbido em JavaScript:
let value;
do {
value = document.querySelector('#field').value;
} while (!value)
Esse código irá travar o browser (ou a aba), pois não sobra recursos de processamento para o browser funcionar.
Consegui compreender melhor, obrigado pela ajuda!
Mais ou menos, porque ele é concorrente(divide cpu) ele tem um modelo de event loop. Tem até uma palestra antiga do Fabio Akita, que ele fala sobre Elixir e dá alguns exemplos o nodejs.