var Promise = require("bluebird"); var apiUrls = ["url1", "url2", "url3"]; var request = function(url) { // request the rate limited api (returns a promise) }; var saveResponse = function(response) { // save response to file/db (returns a promise) }; apiUrls .reduce(function (accumulatedPromise, url) { return accumulatedPromise .then(function () { return request(url); }) .then(saveResponse); }, Promise.resolve()) .then(function () { console.log("all done."); });