JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 14441293
  • Score
    100M100P100Q220516F
  • License MIT

Timeout a promise after a specified amount of time

Package Exports

  • p-timeout

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (p-timeout) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

p-timeout

Timeout a promise after a specified amount of time

Install

$ npm install p-timeout

Usage

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]

API

pTimeout(input, milliseconds, message?, options?)

pTimeout(input, milliseconds, fallback?, options?)

Returns a decorated input that times out after milliseconds time.

If you pass in a cancelable promise, specifically a promise with a .cancel() method, that method will be called when the pTimeout promise times out.

input

Type: Promise

Promise to decorate.

milliseconds

Type: number

Milliseconds before timing out.

Passing Infinity will cause it to never time out.

message

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.

fallback

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);
});

options

Type: object

customTimers

Type: object with function properties setTimeout and clearTimeout

Custom implementations for the setTimeout and clearTimeout functions.

Useful for testing purposes, in particular to work around sinon.useFakeTimers().

Example:

const pTimeout = require('p-timeout');
const sinon = require('sinon');

(async () => {
    const originalSetTimeout = setTimeout;
    const originalClearTimeout = clearTimeout;

    sinon.useFakeTimers();

    // Use `pTimeout` without being affected by `sinon.useFakeTimers()`:
    await pTimeout(doSomething(), 2000, undefined, {
        customTimers: {
            setTimeout: originalSetTimeout,
            clearTimeout: originalClearTimeout
        }
    });
})();

pTimeout.TimeoutError

Exposed for instance checking and sub-classing.

  • delay - Delay a promise a specified amount of time
  • p-min-delay - Delay a promise a minimum amount of time
  • p-retry - Retry a promise-returning function
  • More…