Parse 502 status code response as a GraphQL response.
As reported by @cjwagner in https://github.com/shurcooL/graphql/issues/29#issuecomment-424103540 and recently reproduced by me, GitHub GraphQL API v4 can return a response with status code 502 that includes a valid GraphQL response:
{
"data":"null",
"errors":[
{
"message":"Something went wrong while executing your query. This may be the result of a timeout, or it could be a GitHub bug. Please include `8FF2:721B:31D84D5:6EF58BD:5BCF3079` when reporting this issue."
}
]
}
(I'm a little surprised and concerned that data field is a string "null" rather than a JSON null value. It's still valid JSON, but... According to GraphQL spec, "If an error was encountered during the execution that prevented a valid response, the data entry in the response should be null.")
We can parse it as such, instead of returning a generic "non-200 OK status code" error:

This may depend on shurcooL/graphql#5 being resolved, or maybe there's a shorter path to getting this done.
Another use case is for detecting when a rate limit is hit. According to https://github.com/shurcooL/githubv4/issues/57#issue-569538004, GitHub returns HTTP 429 status code in those cases.
According to #57 (comment), GitHub returns HTTP 429 status code in those cases.
I actually don't know, it's just what I expected to happen.