Timeout a promise after a specified amount of time
$ npm install p-timeout
const delay = require('delay'); const pTimeout = require('p-timeout'); const delayedPromise = delay(200); pTimeout(delayedPromise, 50).then(() => 'foo'); //=> [TimeoutError: Promise timed out after 50 milliseconds]
Returns a decorated input that times out after ms time.
Type: Promise
Promise to decorate.
Type: number
Milliseconds before timing out.
Type: string Error
Default: 'Promise timed out after 50 milliseconds'
Specify a custom error message or error.
If you do a custom error, it's recommended to sub-class pTimeout.TimeoutError.
Type: Function
Do something other than rejecting with an error on timeout.
You could for example retry:
const delay = require('delay'); const pTimeout = require('p-timeout'); const delayedPromise = () => delay(200); pTimeout(delayedPromise(), 50, () => { return pTimeout(delayedPromise(), 300); });
Exposed for instance checking and sub-classing.
MIT © Sindre Sorhus