| // https://github.com/tc39/proposal-promise-finally |
| 'use strict'; |
| var $export = require('./_export'); |
| var core = require('./_core'); |
| var global = require('./_global'); |
| var speciesConstructor = require('./_species-constructor'); |
| var promiseResolve = require('./_promise-resolve'); |
| |
| $export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) { |
| var C = speciesConstructor(this, core.Promise || global.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 |
| ); |
| } }); |