esnext.promise.try.js 852 B

123456789101112131415161718192021
  1. 'use strict';
  2. var $ = require('../internals/export');
  3. var apply = require('../internals/function-apply');
  4. var slice = require('../internals/array-slice');
  5. var newPromiseCapabilityModule = require('../internals/new-promise-capability');
  6. var aCallable = require('../internals/a-callable');
  7. var perform = require('../internals/perform');
  8. // `Promise.try` method
  9. // https://github.com/tc39/proposal-promise-try
  10. $({ target: 'Promise', stat: true, forced: true }, {
  11. 'try': function (callbackfn /* , ...args */) {
  12. var args = slice(arguments, 1);
  13. var promiseCapability = newPromiseCapabilityModule.f(this);
  14. var result = perform(function () {
  15. return apply(aCallable(callbackfn), undefined, args);
  16. });
  17. (result.error ? promiseCapability.reject : promiseCapability.resolve)(result.value);
  18. return promiseCapability.promise;
  19. }
  20. });