Skip to content

[BUG]: Error when using retry plugin with codeowners errors request #536

@trv-nmontele

Description

@trv-nmontele

What happened?

the @octokit/plugin-retry package is unable to handle calling the Github API endpoint to list CODEOWNERS errors (https://docs.github.com/en/rest/repos/repos?apiVersion=2022-11-28#list-codeowners-errors).

Since the API endpoint by default is expected to return a list of errors, in the case where there are no errors it will return an empty list. However, the retry plugin specifically checks to see if the errors list exists in the response:

response.data.errors &&

The retry plugin will then try to log the first error message. This will throw an error if the list is empty.

Here is the code I am using

import {Octokit} from "@octokit/core";
import {retry} from "@octokit/plugin-retry";

const MyOctokit = Octokit.plugin(retry)
const client = new MyOctokit({
    auth: token,
    baseUrl: url,
});

const getCodeownerIssues = async (owner, repo) => {
    return await client.request("GET /repos/{owner}/{repo}/codeowners/errors", {
        owner,
        repo,
    });
}

When I run this code I get an error message from the octokit/plugin-retry, however when I remove the retry plugin, I get a success response.

See the Relevant log output section for the error message I am getting.

Versions

Node v18.16.0, @octokit/core v6.1.1, @octokit/plugin-retry v7.1.0

Relevant log output

file:///C:/Project%20Area/test-octokit/node_modules/@octokit/plugin-retry/dist-bundle/index.js:38
    response.data.errors[0].message
                            ^

TypeError: Cannot read properties of undefined (reading 'message')
    at requestWithGraphqlErrorHandling (file:///C:/Project%20Area/test-octokit/node_modules/@octokit/plugin-retry/dist-bundle/index.js:38:29)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async Job.doExecute (C:\Project Area\test-octokit\node_modules\bottleneck\light.js:405:18)

Node.js v18.16.0

Code of Conduct

  • I agree to follow this project's Code of Conduct

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status

    ✅ Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions