The http.get promise treated any request that made it through the pcall without erroring as a success to resolve.
ApiContext would then check the status code and reject, but by then it's too late to handle gracefully and we just show the error code and stop the sync.
This improves that. We create a relevant Error object for requests that are not success codes, so that ApiContext can handle them correctly.
The immediate impact is that GitHub Codespaces is now compatible with Rojo, since requests to the forwarded port receive a 504 Gateway Timeout after 100 seconds. Given our long polling, we simply resend requests that return a timeout.
The
http.get
promise treated any request that made it through thepcall
without erroring as a success toresolve
.ApiContext
would then check the status code andreject
, but by then it's too late to handle gracefully and we just show the error code and stop the sync.This improves that. We create a relevant
Error
object for requests that are not success codes, so thatApiContext
can handle them correctly.The immediate impact is that GitHub Codespaces is now compatible with Rojo, since requests to the forwarded port receive a 504 Gateway Timeout after 100 seconds. Given our long polling, we simply resend requests that return a timeout.