UNPKG

mixer-client-node

Version:

A node client for connecting to mixer and the mixer services

42 lines (41 loc) 1.43 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.requestAPI = void 0; const request = require("request-promise"); // tslint:disable-next-line: no-submodule-imports const errors = require("request-promise/errors"); function requestAPI(opts) { return new Promise((resolve, reject) => { const { auth, ...options } = opts; request(options) .then(resolve) .catch(errors.StatusCodeError, (reason) => { if (reason && reason.statusCode === 429) { const header = +reason.response.headers['X-RateLimit-Reset']; const timeout = isNaN(header) ? Number(header) - Date.now().valueOf() : 3000; setTimeout(() => { requestAPI(options); }, timeout); } else if (reason) { reject({ error: reason.error, statusCode: reason.statusCode }); } else { reject({ error: 'Unknown', statusCode: 500 }); } }) .catch(errors.RequestError, (reason) => { reject({ error: reason.cause, statusCode: reason.response ? reason.response.statusCode : 500 }); }); }); } exports.requestAPI = requestAPI;