Как связать и поделиться предыдущими результатами с Обещаниями [дубликаты]

На этот вопрос уже есть ответ здесь:

Как получить доступ к предыдущим результатам обещания в цепочке .then ()? 15 ответов

Я использую библиотеку bluebird и мне нужно сделать серию HTTP-запросов, и мне нужны некоторые данные ответа на следующий HTTP-запрос. Я построил функцию, которая обрабатывает мои запросы под названиемcallhttp(), Это занимает URL-адрес и тело сообщения.

Я называю это так:

var payload = '{"Username": "joe", "Password": "password"}';
var join = Promise.join;
join(
    callhttp("172.16.28.200", payload),
    callhttp("172.16.28.200", payload),
    callhttp("172.16.28.200", payload),
    function (first, second, third) {
    console.log([first, second, third]);
});

Первый запрос получает ключ API, который необходимо передать второму запросу и так далее. Как получить данные ответа от первого запроса?

ОБНОВИТЬ

Этоcallhttp функция:

var Promise = require("bluebird");
var Request = Promise.promisify(require('request'));

function callhttp(host, body) {

    var options = {
        url: 'https://' + host + '/api/authorize',
        method: "POST",
        headers: {
            'content-type': 'application/json'
        },
        body: body,
        strictSSL: false
    };

    return Request(options).spread(function (response) {
        if (response.statusCode == 200) {
           // console.log(body)
            console.log(response.connection.getPeerCertificate().subject.CN)
            return {
                data: response.body
            };
        } else {
            // Just an example, 200 is not the only successful code
            throw new Error("HTTP Error: " + response.statusCode );
        }
    });
}

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

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