summaryrefslogtreecommitdiff
path: root/build/es/ensureAsync.js
blob: ba9affd572782ffdfc0c77090fcc3de7cbdbc906 (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
'use strict';

import rest from 'lodash-es/rest';

import setImmediate from './internal/setImmediate';

export default function ensureAsync(fn) {
    return rest(function (args) {
        var callback = args.pop();
        var sync = true;
        args.push(function () {
            var innerArgs = arguments;
            if (sync) {
                setImmediate(function () {
                    callback.apply(null, innerArgs);
                });
            } else {
                callback.apply(null, innerArgs);
            }
        });
        fn.apply(this, args);
        sync = false;
    });
}