rojo-rbx / rojo

Rojo enables Roblox developers to use professional-grade software engineering tools
https://rojo.space
Mozilla Public License 2.0
908 stars 172 forks source link

Catch failed http requests that didn't error so we can handle them correctly #847

Closed boatbomber closed 5 months ago

boatbomber commented 5 months ago

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.