Neglected Pulse Machine

    promise.prototype.finally
    DefinitelyTyped icon, indicating that this package has TypeScript declarations provided by the separate @types/promise.prototype.finally package

    3.1.3 • Public • Published

    promise.prototype.finally Version Badge

    github actions coverage dependency status dev dependency status License Downloads

    npm badge

    ES Proposal spec-compliant shim for Promise.prototype.finally. Invoke its "shim" method to shim Promise.prototype.finally if it is unavailable or noncompliant. Note: a global Promise must already exist: the es6-shim is recommended.

    This package implements the es-shim API interface. It works in an ES3-supported environment that has Promise available globally, and complies with the proposed spec.

    Most common usage:

    var assert = require('assert');
    var promiseFinally = require('promise.prototype.finally');
    
    var resolved = Promise.resolve(42);
    var rejected = Promise.reject(-1);
    
    promiseFinally(resolved, function () {
    	assert.equal(arguments.length, 0);
    
    	return Promise.resolve(true);
    }).then(function (x) {
    	assert.equal(x, 42);
    });
    
    promiseFinally(rejected, function () {
    	assert.equal(arguments.length, 0);
    }).catch(function (e) {
    	assert.equal(e, -1);
    });
    
    promiseFinally(rejected, function () {
    	assert.equal(arguments.length, 0);
    
    	throw false;
    }).catch(function (e) {
    	assert.equal(e, false);
    });
    
    promiseFinally.shim(); // will be a no-op if not needed
    
    resolved.finally(function () {
    	assert.equal(arguments.length, 0);
    
    	return Promise.resolve(true);
    }).then(function (x) {
    	assert.equal(x, 42);
    });
    
    rejected.finally(function () {
    	assert.equal(arguments.length, 0);
    }).catch(function (e) {
    	assert.equal(e, -1);
    });
    
    rejected.finally(function () {
    	assert.equal(arguments.length, 0);
    
    	throw false;
    }).catch(function (e) {
    	assert.equal(e, false);
    });

    Tests

    Simply clone the repo, npm install, and run npm test

    Thanks

    Huge thanks go out to @matthew-andrews, who provided the npm package name for v2 of this module. v1 is both in the original repo and preserved in a branch

    Install

    npm i promise.prototype.finally

    DownloadsWeekly Downloads

    3,682,686

    Version

    3.1.3

    License

    MIT

    Unpacked Size

    27.1 kB

    Total Files

    21

    Last publish

    Collaborators

    • ljharb
    • mattandrews