| 'use strict'; |
| var $ = require('../internals/export'); |
| var getBuiltIn = require('../internals/get-built-in'); |
| var speciesConstructor = require('../internals/species-constructor'); |
| var promiseResolve = require('../internals/promise-resolve'); |
| |
| // `Promise.prototype.finally` method |
| // https://tc39.github.io/ecma262/#sec-promise.prototype.finally |
| $({ target: 'Promise', proto: true, real: true }, { |
| 'finally': function (onFinally) { |
| var C = speciesConstructor(this, getBuiltIn('Promise')); |
| var isFunction = typeof onFinally == 'function'; |
| return this.then( |
| isFunction ? function (x) { |
| return promiseResolve(C, onFinally()).then(function () { return x; }); |
| } : onFinally, |
| isFunction ? function (e) { |
| return promiseResolve(C, onFinally()).then(function () { throw e; }); |
| } : onFinally |
| ); |
| } |
| }); |