Ваш метод auth begin ничего не возвращает. Невозможно соединиться от звонка, если он ничего не возвращает. Однако ваша настоящая проблема заключается в том, что вам нужно ждать асинхронного действия (пользователь должен авторизовать что-то в вашем всплывающем окне). Таким образом, вы не можете объединить вызовы в цепочку, поскольку связанные вызовы требуют синхронного (блокирующего) потока. Другими словами, невозможно сделать блок кода, пока пользователь не ответит, а затем собрать данные синхронно. Вы должны использовать обратные вызовы.
Одна из вещей, которые мне нравятся в JS, - это возможность задавать обратные вызовы, что делает его почти похожим на стиль цепочки, который вы ищете
Вот предложение с упрощенной версией вашего кода:
/**
* Initialize an authorization request
* @param {Function} callback method to be called when authentication is complete.
* Takes one parameter: {object} userInfo indicating success or null
* if not successful
*/
function authenticate(callback) {
window.oauth_success = function(userInfo) {
popupWin.close();
callback(userInfo);
}
window.oauth_failure = function() {
popupWin.close();
callback(null);
}
var popupWin = window.open('/auth/twitter');
};
}
authenticate(function(userInfo){
if (userInfo) {
console.log("User succesfully authenticated", userInfo);
} else {
console.log("User authentication failed");
}
});