Это не то, как Q.spread
будет работать. Обещание по-прежнему разрешается только до одного значения, spread
касается того, как будет вызываться обратный вызов. Согласно документам, вам нужно будет написать либо
return Q.spread([positionEngine, mapEngine], (pos, map) => {
, либо
return Q.all([positionEngine, mapEngine]).spread((pos, map) => {
Однако современный подход заключается в использовании синтаксиса деструктуризации параметров:
return Q.all([positionEngine, mapEngine]).then(([pos, map]) => {
что также будет работать при переходе на обещания ES6.