Make requests for a single user or client ID serially. Do not make requests for a single user or client ID concurrently.
When you have been limited, use the Retry-After response header to slow down. The value of the Retry-After header will always be an integer, representing the number of seconds you should wait before making requests again. For example, Retry-After: 30 means you should wait 30 seconds before sending more requests.
https://developer.github.com/v3/guides/best-practices-for-integrators/#dealing-with-abuse-rate-limits
https://developer.github.com/v3/#abuse-rate-limits
There are 2 points where we need to work: