box-node-sdk icon indicating copy to clipboard operation
box-node-sdk copied to clipboard

Provide a way to set timeout on requests made by `box-node-sdk`

Open chenbauer opened this issue 1 year ago • 3 comments

Is your feature request related to a problem? Please describe.

Currently the sdk sets no default timeout and provides no official configuration option to limit the request timeout. From @cypress/request documentation regarding timeouts:

Most requests to external servers should have a timeout attached, in case the server is not responding in a timely manner. Without a timeout, your code may have a socket open/consume resources for minutes or more.

During a recent Box outage our application requests were blocked by calls made by the sdk, which by default, retries 5 times before failing. We will reduce number of retries (which is configurable) but would also like a way to limit the request timeout.

Describe the solution you'd like

It would be great if we could set timeout per request (specifically for us - getAppUserTokens), but being able to set it globally in configure is also helpful. Currently only uploadRequestTimeoutMS is officially supported - https://rawgit.com/box/box-node-sdk/main/docs/jsdoc/global.html#UserConfigurationOptions

Describe alternatives you've considered

This is our current workaround -

this.boxSdk.configure({
            numMaxRetries: 2,
            request: { timeout: 2000 },
        });

Thanks!

chenbauer avatar Jan 24 '24 08:01 chenbauer