aboutsummaryrefslogtreecommitdiff
path: root/node_modules/async/internal/wrapAsync.js
blob: 862dc90f2ba98bb6b3918226b3aeea4016354108 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
'use strict';

Object.defineProperty(exports, "__esModule", {
    value: true
});
exports.isAsync = exports.supportsAsync = undefined;

var _identity = require('lodash/identity');

var _identity2 = _interopRequireDefault(_identity);

var _asyncify = require('../asyncify');

var _asyncify2 = _interopRequireDefault(_asyncify);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

var supportsSymbol = typeof Symbol === 'function';

function supportsAsync() {
    var supported;
    try {
        /* eslint no-eval: 0 */
        supported = isAsync(eval('(async function () {})'));
    } catch (e) {
        supported = false;
    }
    return supported;
}

function isAsync(fn) {
    return supportsSymbol && fn[Symbol.toStringTag] === 'AsyncFunction';
}

function wrapAsync(asyncFn) {
    return isAsync(asyncFn) ? (0, _asyncify2.default)(asyncFn) : asyncFn;
}

exports.default = supportsAsync() ? wrapAsync : _identity2.default;
exports.supportsAsync = supportsAsync;
exports.isAsync = isAsync;