Nó; Q Atraso da promessa

Aqui estão algumas perguntas simples baseadas no comportamento que observei no exemplo a seguir em execução no nó:

Q('THING 1').then(console.log.bind(console));
console.log('THING 2');

A saída para isso é:

> "THING 2"
> "THING 1"
Questões:

1) Por que éQ implementado para aguardar antes de executar o retorno de chamada em um valor imediatamente conhecido? Por que nãoQ inteligente o suficiente para permitir que a primeira linha emita de forma síncrona sua saída antes da execução da segunda linha?

2) Qual é o intervalo de tempo entre"THING 2" e"THING 1" sendo produzido? É um único tick de processo?

3) Poderia haver preocupações de desempenho com valores profundamente envolvidos em promessas? Por exemplo, fazQ(Q(Q("THING 1"))) aguarde de forma assíncrona 3 vezes o tempo para concluir, mesmo que possa ser resolvido de forma eficiente e síncrona?

questionAnswers(1)

yourAnswerToTheQuestion