Skip to content

Error callback not firing when hitting rate limit #348

Closed

Description

@divergentdave

I'm using github-api in Node v4.4.5, and I've found that if I exhaust the 60 request/hour unauthenticated rate limit, then certain functions never call their callback. For example, the following script works normally until I hit the limit, then after that the callback never gets called.

#!/usr/bin/env node
"use strict";
var GitHub = require("github-api");
var gh = new GitHub({});

var username = "divergentdave";
var user = gh.getUser(username);
user.listRepos(function(error, result, request) {
    console.log("hit callback");
    if (error) {
        console.error(error);
        return;
    }
});

pi@raspberrypi ~/github-user-branches $ node check-rate-limit.js 
Limit remaining: 1
Reset date: Mon Jun 13 2016 20:45:09 GMT-0500 (CDT)
pi@raspberrypi ~/github-user-branches $ node example.js 
hit callback
pi@raspberrypi ~/github-user-branches $ node example.js 
pi@raspberrypi ~/github-user-branches $ 

Other methods, such as User.getProfile() properly call the callback with an error object, complete with details of the 403 response from the API server. I haven't arrived at the root cause yet, but it is most likely in Requestable._requestAllPages.

I'd be up for working on a PR for this, but first, testing for this issue should probably be done with fixture data for the HTTP responses, rather than hitting the GitHub servers directly. Do you have any preferences for which mocking library to use? I see that nock is a popular choice.

Activity

  1. clayreimann commented on Jun 17, 2016

    @clayreimann
    Member

    No preference here. I think I've seen a similar error crop up in the Travis testing. I'm guessing the error actually lies with callbackErrorOrThrow receiving something other than an Axios response.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions