@octokit/plugin-retry
v7.1.2
Published
Automatic retry plugin for octokit
Downloads
9,712,053
Readme
plugin-retry.js
Retries requests for server 4xx/5xx responses except
400
,401
,403
,404
,422
, and451
.
Usage
Load @octokit/plugin-retry
and @octokit/core
(or core-compatible module) directly from esm.sh
<script type="module">
import { Octokit } from "https://esm.sh/@octokit/core";
import { retry } from "https://esm.sh/@octokit/plugin-retry";
</script>
Install with npm install @octokit/core @octokit/plugin-retry
. Optionally replace @octokit/core
with a core-compatible module
import { Octokit } from "@octokit/core";
import { retry } from "@octokit/plugin-retry";
[!IMPORTANT] As we use conditional exports, you will need to adapt your
tsconfig.json
by setting"moduleResolution": "node16", "module": "node16"
.See the TypeScript docs on package.json "exports". See this helpful guide on transitioning to ESM from @sindresorhus
const MyOctokit = Octokit.plugin(retry);
const octokit = new MyOctokit({ auth: "secret123" });
// retries request up to 3 times in case of a 500 response
octokit.request("/").catch((error) => {
if (error.request.request.retryCount) {
console.log(
`request failed after ${error.request.request.retryCount} retries`,
);
}
console.error(error);
});
To override the default doNotRetry
list:
const octokit = new MyOctokit({
auth: "secret123",
retry: {
doNotRetry: [
/* List of HTTP 4xx/5xx status codes */
],
},
});
To override the number of retries:
const octokit = new MyOctokit({
auth: "secret123",
request: { retries: 1 },
});
You can manually ask for retries for any request by passing { request: { retries: numRetries, retryAfter: delayInSeconds }}
. Note that the doNotRetry
option from the constructor is ignored in this case, requests will be retried no matter their response code.
octokit
.request("/", { request: { retries: 1, retryAfter: 1 } })
.catch((error) => {
if (error.request.request.retryCount) {
console.log(
`request failed after ${error.request.request.retryCount} retries`,
);
}
console.error(error);
});
Pass { retry: { enabled: false } }
to disable this plugin.
Contributing
See CONTRIBUTING.md