HTTPService add a timeout option

Currently, as a developer, I find it difficult to control an HTTP request. I heavily utilize HTTPService in my games but run into the issue where if a service fails to respond, the request hangs for 2 minutes. Normally, this wouldn’t be an issue because you could put the request in a different thread and create your own timeout system, but HTTPService has a maximum number of concurrent HTTP requests, which is also not documented. Testing the limit today, you are only allowed a max of 16 concurrent requests in a server or 3 in Roblox Studio.

Designing a custom timeout system around the issue causes the side effect of concurrent requests going over the limit if the service does not respond to the request. Requests sent after you have hit the concurrent request limit are in queue until the existing concurrent requests expire. Having all your HTTP requests locked because of a service failing to respond has affected my game Rush Point for a few years now and causing critical functionality of the game to break or lock up for minutes.

If a timeout option could be added to GetAsync, PostAsync, and RequestAsync, that would greatly help us developers. As Roblox continues to grow, larger game studios are coming to Roblox and require heavy analytics usage through HTTPService to facilitate gathering crucial data. Adding a timeout option would remove a pain point that would generally cause “throttling” when concurrent requests hit the limit from unresponsive services.

14 Likes