В общем, не полагайтесь на какой-либо алгоритм планирования, если вам требуется определенный порядок, сделайте его явным.
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
let p = sleep(50);
p.then(() => console.log('a')).then(() => console.log('c'));
p.then(() => console.log('b')).then(() => console.log('d'));
тируется ли это печать «a, b, c, d» в таком порядке?
Насколько я могу судить, «a» должен сработать до «c», а «b» - до «d», но может ли интерпретатор JS решить выполнить оставшуюся часть в другом порядке?