-async function riotRequest(region, url, params, retries) {
- if (retries < 1) throw "Error too many tries";
+let requests = [];
+
+async function executeRequest() {
+ if (requests.length > 0) {
+ let req = requests.shift();
+ if (req.retries < 1) req.rej();
+ else {
+ try {
+ console.log("[Info] request: " + req.url);
+ let result = await request({uri: req.url, resolveWithFullResponse: true, json: true});
+
+ let appRateLimit = result.headers["x-app-rate-limit"];
+ let appRateLimitCount = result.headers["x-app-rate-limit-count"];
+ appRateLimit1 = appRateLimit.split(",")[0].split(":")[0];
+ appRateLimit120 = appRateLimit.split(",")[1].split(":")[0];
+ appRateLimitCount1 = appRateLimitCount.split(",")[0].split(":")[0];
+ appRateLimitCount120 = appRateLimitCount.split(",")[1].split(":")[0];
+
+ if (typeof result.body == "object") req.res(result.body);
+ else req.res(JSON.parse(result.body));
+ } catch (err) {
+ console.log("[Error] riotRequest: " + err.message);
+ req.retries--;
+ requests.push(req);
+ }
+ }
+ }
+ let delay1 = 1000 / (appRateLimit1 - 1);
+ let delay120 = 120000 / (appRateLimit120 - 1);
+ setTimeout(executeRequest, Math.max(delay1, delay120));
+}
+executeRequest();