Fluxo não bloqueante do JS

Olá pessoal, ainda sou novo nesse mundo da programação e no meio dos meus estudos me deparei, finalmente, com a tal programação assíncrona do JS. Mas vi conceitos como o async/await, que para mim, servem como saída para mantermos a sequancialidade do fluxo de execução do nosso cód. Daí me vi perdido, pois a assíncronicidade estava sendo "evitada". E para mim, o certo seria ela ser aproveitada e não o contrário. Confesso que estou um pouco confuso com tudo isso, se puderem me explicar mais sobre, agradeço.

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. [The Elixir of Life por Fabio Akita - DevInSantos 2015](https://www.youtube.com/watch?v=8Ng6TfAj7Sk)

Tenho uns textos que fiz para me ajudarem a aprender melhor!

https://dev.to/urielsouza29/callback-como-entender-45bl

https://dev.to/urielsouza29/promise-em-js-prometa-que-voce-vai-aprender-prometa-5g17

https://dev.to/urielsouza29/async-await-veio-nos-salvar-d91

Olha eu demorei a entender a parte assincrona do JS! Sofri por isso fiz esses textos pra ajudar :)