mirror of
https://github.com/github/codeql-action.git
synced 2025-12-27 01:30:10 +08:00
I explicitly had to downgrade "@octokit/plugin-retry" to "^6.0.0". Other dependencies were upgraded.
35 lines
1.2 KiB
JavaScript
35 lines
1.2 KiB
JavaScript
import Bottleneck from "bottleneck/light";
|
|
import { RequestError } from "@octokit/request-error";
|
|
import { errorRequest } from "./error-request";
|
|
async function wrapRequest(state, octokit, request, options) {
|
|
const limiter = new Bottleneck();
|
|
limiter.on("failed", function(error, info) {
|
|
const maxRetries = ~~error.request.request.retries;
|
|
const after = ~~error.request.request.retryAfter;
|
|
options.request.retryCount = info.retryCount + 1;
|
|
if (maxRetries > info.retryCount) {
|
|
return after * state.retryAfterBaseValue;
|
|
}
|
|
});
|
|
return limiter.schedule(
|
|
requestWithGraphqlErrorHandling.bind(null, state, octokit, request),
|
|
options
|
|
);
|
|
}
|
|
async function requestWithGraphqlErrorHandling(state, octokit, request, options) {
|
|
const response = await request(request, options);
|
|
if (response.data && response.data.errors && response.data.errors.length > 0 && /Something went wrong while executing your query/.test(
|
|
response.data.errors[0].message
|
|
)) {
|
|
const error = new RequestError(response.data.errors[0].message, 500, {
|
|
request: options,
|
|
response
|
|
});
|
|
return errorRequest(state, octokit, error, options);
|
|
}
|
|
return response;
|
|
}
|
|
export {
|
|
wrapRequest
|
|
};
|