Узел; Q Задержка обещания

Вот несколько простых вопросов, основанных на поведении, которое я заметил в следующем примере:

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

Выход для этого:

> "THING 2"
> "THING 1"
Вопросы:

1) ПочемуQ реализован для ожидания перед запуском обратного вызова для значения, которое сразу известно? Почему нетQ достаточно умен, чтобы позволить первой строке синхронно выдать свой вывод до запуска 2-й строки?

2) Какой промежуток времени между"THING 2" а также"THING 1" выводится? Это единый процесс?

3) Могут ли быть проблемы производительности с ценностями, которые глубоко обернуты в обещаниях? Например, делаетQ(Q(Q("THING 1"))) асинхронное ожидание в 3 раза дольше, даже если оно может быть эффективно разрешено синхронно?

Ответы на вопрос(1)

Ваш ответ на вопрос