Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 400,000 packages pre-installed, including p-defer with all npm packages installed. Try it out:

var pDefer = require("p-defer")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

p-defer v3.0.0

Create a deferred promise

p-defer Build Status

Create a deferred promise

Don't use this unless you know what you're doing. Prefer the Promise constructor.


$ npm install p-defer


const pDefer = require('p-defer');

function delay(ms) {
    const deferred = pDefer();
    setTimeout(deferred.resolve, ms, '🦄');
    return deferred.promise;

(async () => {
    console.log(await delay(100));
    //=> '🦄'

The above is just an example. Use delay if you need to delay a promise.



Returns an object with a promise property and functions to resolve() and reject().


  • p-lazy - Create a lazy promise that defers execution until .then() or .catch() is called
  • More…


RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free