| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 | 
							- "use strict";
 
- var util = require("./util");
 
- var schedule;
 
- var noAsyncScheduler = function() {
 
-     throw new Error("No async scheduler available\u000a\u000a    See http://goo.gl/MqrFmX\u000a");
 
- };
 
- var NativePromise = util.getNativePromise();
 
- if (util.isNode && typeof MutationObserver === "undefined") {
 
-     var GlobalSetImmediate = global.setImmediate;
 
-     var ProcessNextTick = process.nextTick;
 
-     schedule = util.isRecentNode
 
-                 ? function(fn) { GlobalSetImmediate.call(global, fn); }
 
-                 : function(fn) { ProcessNextTick.call(process, fn); };
 
- } else if (typeof NativePromise === "function" &&
 
-            typeof NativePromise.resolve === "function") {
 
-     var nativePromise = NativePromise.resolve();
 
-     schedule = function(fn) {
 
-         nativePromise.then(fn);
 
-     };
 
- } else if ((typeof MutationObserver !== "undefined") &&
 
-           !(typeof window !== "undefined" &&
 
-             window.navigator &&
 
-             (window.navigator.standalone || window.cordova)) &&
 
-           ("classList" in document.documentElement)) {
 
-     schedule = (function() {
 
-         var div = document.createElement("div");
 
-         var opts = {attributes: true};
 
-         var toggleScheduled = false;
 
-         var div2 = document.createElement("div");
 
-         var o2 = new MutationObserver(function() {
 
-             div.classList.toggle("foo");
 
-             toggleScheduled = false;
 
-         });
 
-         o2.observe(div2, opts);
 
-         var scheduleToggle = function() {
 
-             if (toggleScheduled) return;
 
-             toggleScheduled = true;
 
-             div2.classList.toggle("foo");
 
-         };
 
-         return function schedule(fn) {
 
-             var o = new MutationObserver(function() {
 
-                 o.disconnect();
 
-                 fn();
 
-             });
 
-             o.observe(div, opts);
 
-             scheduleToggle();
 
-         };
 
-     })();
 
- } else if (typeof setImmediate !== "undefined") {
 
-     schedule = function (fn) {
 
-         setImmediate(fn);
 
-     };
 
- } else if (typeof setTimeout !== "undefined") {
 
-     schedule = function (fn) {
 
-         setTimeout(fn, 0);
 
-     };
 
- } else {
 
-     schedule = noAsyncScheduler;
 
- }
 
- module.exports = schedule;
 
 
  |