summaryrefslogtreecommitdiff
path: root/lib/internal/setImmediate.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/internal/setImmediate.js')
-rw-r--r--lib/internal/setImmediate.js33
1 files changed, 21 insertions, 12 deletions
diff --git a/lib/internal/setImmediate.js b/lib/internal/setImmediate.js
index 7d15249..eb4ea63 100644
--- a/lib/internal/setImmediate.js
+++ b/lib/internal/setImmediate.js
@@ -1,21 +1,30 @@
'use strict';
+
import rest from 'lodash/rest';
-var _setImmediate = typeof setImmediate === 'function' && setImmediate;
+export var hasSetImmediate = typeof setImmediate === 'function' && setImmediate;
+export var hasNextTick = typeof process === 'object' && typeof process.nextTick === 'function';
+
+export function fallback(fn) {
+ setTimeout(fn, 0);
+}
+
+export function wrap(defer) {
+ return rest(function (fn, args) {
+ defer(function () {
+ fn.apply(null, args);
+ });
+ });
+}
var _defer;
-if (_setImmediate) {
- _defer = _setImmediate;
-} else if (typeof process === 'object' && typeof process.nextTick === 'function') {
+
+if (hasSetImmediate) {
+ _defer = setImmediate;
+} else if (hasNextTick) {
_defer = process.nextTick;
} else {
- _defer = function(fn) {
- setTimeout(fn, 0);
- };
+ _defer = fallback;
}
-export default rest(function (fn, args) {
- _defer(function () {
- fn.apply(null, args);
- });
-});
+export default wrap(_defer);