Executando verificação de segurança...
2

Um detalhe importante, javascript é concorrente, mas não é assincrono, a sintaxe de javascript parece ser assincrona mas é apenas açúcar, ele é mais como agendador, toda função em javascript é bloqueante, a questão é que tem funções que suspendem sua própria execução e modificam a stack, é essencialmente um schedule-defer

Por exemplo:

funcaoA();
fetchOuOutraCoisaAsync();
funcaoB();
funcaoC();
funcaoD();
funcaoA();
fetchOuOutraCoisaAsync();
poeOAsyncBlahNaPilha()
funcaoB();
chamaAFuncaoAnonimaDe BlaheVerificaSeTerminou();
funcaoC();
chamaAFuncaoAnonimadeBlaheVerificaSeTerminou();
funcaoD();
// Blah terminou antes

Se quiser testar põe dois setInterval e no primeiro põe um alert, o segundo vai atrasar até o alert fechar, como você mesmo cita

Carregando publicação patrocinada...