SergeyERjs,
зря страдаешь.
"return в двух местах" - это когда в пределах одной функции. Бытует мнение, что это антипаттерн. Хотя нельзя сказать наверняка. (с)
У тебя ретурны в разных функциях, только не обязательно делать
return Promise.resolve(obj);, достаточно просто
return obj;
Promise.reject.bind(Promise) вообще ни к селу ни к городу. Как ты это придумал, ума не приложу. Наверняка читал говностатейки по программированию на каком-нибудь говносайтишке.
https://learn.javascript.ru/ - здесь и только здесь надо начинать постигать.
Правильный вариант:
whilePromise(
isNeedContinue.bind(null, obj),
function() {
return doAnything()
.then(function(data) {
console.log("Что-то еще в цикле...");
return data;
});
}
)
Тут просто передаем то значение data, которое получили в промисе doAnything(). А вот если надо будет воткнуть что-то асинхронное между итерациями, тогда возвращаем промис.