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.