mixer-client-node
Version:
A node client for connecting to mixer and the mixer services
42 lines (41 loc) • 1.43 kB
JavaScript
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;
;