Как дождаться и вернуть результат http.request (), чтобы несколько запросов выполнялись последовательно?

Предположим, что есть функцияdoRequest(options), который должен выполнить HTTP-запрос и используетhttp.request() для этого.

ЕслиdoRequest() вызывается в цикле, я хочу, чтобы следующий запрос выполнялся после предыдущего завершения (последовательное выполнение, одно за другим). Чтобы не связываться с обратными вызовами и обещаниями, я хочу использовать шаблон async / await (поставляется с Babel.js для запуска с Node 6+).

Однако мне неясно, как ждать объект ответа для дальнейшей обработки и как вернуть его в результатеdoRequest():

var doRequest = async function (options) {

    var req = await http.request(options);

    // do we need "await" here somehow?
    req.on('response', res => {
        console.log('response received');
        return res.statusCode;
    });
    req.end(); // make the request, returns just a boolean

    // return some result here?!
};

Если я запускаю свой текущий код, используякофе мокко используя различные опции для HTTP-запросов, все запросы выполняются одновременно. Все они терпят неудачу, вероятно, потому чтоdoRequest() на самом деле ничего не возвращает:

describe('Requests', function() {
    var t = [ /* request options */ ];
    t.forEach(function(options) {
        it('should return 200: ' + options.path, () => {
            chai.assert.equal(doRequest(options), 200);
        });
    });
});

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

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