One solution might be for Github to store the details of each failed call, and give each call a number that increments (not just for failed calls). Then, if the server notices that it's missed a call into it, it can call Github and fetch those missing calls. Furthermore, if it notices it's not received a call for a while, it can could call in to check.