Skip to main content

Retry or not

Every PoolError also has three properties, so you can handle a whole class of failures without listing cases:
An app that used its month’s cloud assist units or connected installs gets rateLimited, with a retryAfter that runs to when the allowance renews. There is no separate case for quota_exceeded or plan_limit; the service’s error body still names them, and the dashboard shows usage. From React Native, a rejected promise has code (the case name) and message (the case with its values, such as rateLimited(retryAfter: 60)), and PoolKit.errorDetails(error) returns { code, message, retryable, retryAfter, serverCode }. Stream onError handlers get the same fields. See React Native and Expo. Being offline never breaks the engine. Only a key that the service has rejected stops the client, and it stays stopped until the app opens with a good key.