Доброго времени суток, продолжаю писать парсер инстаграма с использованием его приватного апи и ассинхронных функций (
https://github.com/huttarichard/instagram-private-api) , наткнулся на проблему, которую не могу решить уже полдня: так как для каждого аккаунта, с помощью которого идет парсинг, есть ограничения на апи, то я решил, что было бы неплохой идеей подсовывать допустим каждые 50 юзернеймов новые куки, тобишь новый аккаунт. Выглядит это примерно так:
'use strict';
var InstagramPrivateAPI = {};
InstagramPrivateAPI = {};
InstagramPrivateAPI.V1 = require(__dirname + '/client/v1');
InstagramPrivateAPI.Helpers = require(__dirname + '/helpers');
var acc = require(__dirname + "/client/v1/account");
var med = require(__dirname + "/client/v1/media")
var Promise = require('../bluebird');
var _ = require('../lodash/');
module.exports = InstagramPrivateAPI;
var Client = require('instagram-private-api').V1;
var device = new Client.Device('instagram');
function getRandomInt(min, max) {
  return Math.floor(Math.random() * (max - min)) + min;
}
var fs = require('fs');
var proxyArray = fs.readFileSync('proxy.txt').toString().split("\n");
var usernamesArray = fs.readFileSync('usernames.txt').toString().split("\n");
    
//var proxy = "http://" + proxyArray[getRandomInt(0,proxyArray.length)]
//var username = usernamesArray[getRandomInt(0,usernamesArray.length)]
//console.log(proxy)
//console.log(username)
//Client.Request.setProxy(proxy);
//массив json cookies
var arrCookies = [];
fs.readdirSync(__dirname + '/cookies').forEach(file => {
  arrCookies.push(file);
})
var index = arrCookies.indexOf('.DS_Store');
if (index > -1) {
  arrCookies.splice(index, 1);
}
for (var k = 1; k < arrCookies.length; k++) {
    console.log("Работаем с аккаунтом: " + arrCookies[k])
    var storage = new Client.CookieFileStorage(__dirname + '/cookies/' + arrCookies[k]);
    var proxy = "http://" + proxyArray[getRandomInt(0,proxyArray.length)];
    Client.Request.setProxy(proxy);
Client.Session.create(device, storage)
.then(function(session) {
for (var i = 1; i <= 50; i++) {
acc.searchForUser(session, usernamesArray[i*k]) //поиск id пользователя
    .then(function(profile) {
        return profile.id
    })
    .then(function(someId) {  //получение промиса lenta
        var feed = new Client.Feed.UserMedia(session, someId);
        var lenta = Promise.mapSeries(_.range(0, 1), function() {
            return feed.get();
        }).then(function(lenta) {
            return {id: someId, fd : lenta}
        })
        return lenta
    })
    .then(function(results) {  //обработка промиса и получение ленты пользователя
        // result should be Media[][]
        var media1 = _.flatten(results.fd);
        var urls1 = _.map(media1, function(medium) {
                //var arr1 = medium.params.images[0].url;
            var arr1 = []
            try {
                arr1 = medium.params.images[0].url
            } catch (err) {
                //console.log("lala")
            }
            return arr1;
            //console.log(medium.params.carouselMedia.images[0].url)
        })
        //console.log(urls1)
        return {id : results.id, linksNoCarousel : urls1, med : media1}
    })
    .then(function(res){
        var urls2 = _.map(res.med, function(medium) {
            var arr2 = []
            try {
                arr2 = medium.params.images[0][0].url
                //console.log(arr2)
            } catch (err) {
            }
            return arr2        
        })
        for (var i = 0; i < 5; i++) {
            if (typeof res.linksNoCarousel[i] == "undefined")
                res.linksNoCarousel[i] = urls2[i];
        }
        var arr3 = []
        for (var i = 0; i < 5; i++) {
            arr3[i] = res.linksNoCarousel[i]
        }
        return {id : res.id, links : arr3}
    })
    .then(function(mediaAndId) {
        acc.getById(session, mediaAndId.id)
            .then(function(account) {
                //console.log(account.params)
                let avatar = account.params.profilePicUrl;
                let username =  account.params.username;
                let fullName = account.params.fullName;
                let bio = account.params.biography;
                let media0 = mediaAndId.links[0];
                let media1 = mediaAndId.links[1];
                let media2 = mediaAndId.links[2];
                let media3 = mediaAndId.links[3];
                let media4 = mediaAndId.links[4];
                console.log(account.params.username)
                /*console.log(fullName);
                console.log(bio);
                console.log(media0);
                console.log(media1);
                console.log(media2);
                console.log(media3);
                console.log(media4);*/   
           })
    })
}
}
)
}
Данный код работает, однако каждый из аккаунтов(юзерагентов) обрабатывает только первый 50 профилей из списка юзернеймов.
Проблема в том, что я не совсем хорошо разбираюсь в асинхронных функциях, и не знаю как к этому делу приделать циклы, тобишь чтобы первый 50 юзернеймов парсил первый аккаунт, вторые 50 юзернеймов второй и так далее. Возможно ли это вообще или может быть каждый раз делать новый запросы на сервер? Предложите, пожалуйста, как это можно сделать, голову сломал уже, если возможно, то с кодом