Modify GitHubApi to throw an IllegalStateException if the rate limit is exceeded (X-RateLimit-Remaining is 0). I chose to fail-fast here instead of assuming callers will always check the result. This is fine in this small application.
Move the rate limit check logic out of the GitHubResponse "from" factory method and into its own method, sendRequestAndCheckRateLimit. This keeps the "from" method simple and free of cross-cutting concerns.
Add several methods to GitHubResponse to get the reset time, the time until reset from a given date, and methods to check if the rate limit is exceeded.
Add rateLimitResource to GitHubResponse, so that it can be included in log and exception messages, which will be most useful if the rate limit is exceeded.
Add GitHubResponseTest as dedicated test of GitHubResponse
Misc:
Remove unused (except in tests) takeRequestWith1MilliTimeout from MockWebServerExtensions.kt
Add firstValueOrThrow to HttpHeadersExtensions.kt
Add top-level and extension functions in DateTimeExtensions.kt
Misc:
Closes #173