try-to-catch.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. 'use strict';
  2. function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }
  3. function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }
  4. function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }
  5. function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }
  6. var success = function success(a) {
  7. return [null, a];
  8. };
  9. var fail = function fail(a) {
  10. return [a];
  11. };
  12. var noArg = function noArg(f, a) {
  13. return function () {
  14. return f.apply(void 0, _toConsumableArray(a));
  15. };
  16. };
  17. module.exports = function (fn) {
  18. check(fn);
  19. for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
  20. args[_key - 1] = arguments[_key];
  21. }
  22. return Promise.resolve().then(noArg(fn, args)).then(success).catch(fail);
  23. };
  24. function check(fn) {
  25. if (typeof fn !== 'function') throw Error('fn should be a function!');
  26. }