module.exports = defer;

/**

* Runs provided function on next iteration of the event loop
*
* @param {function} fn - function to run
*/

function defer(fn) {

var nextTick = typeof setImmediate == 'function'
  ? setImmediate
  : (
    typeof process == 'object' && typeof process.nextTick == 'function'
    ? process.nextTick
    : null
  );

if (nextTick)
{
  nextTick(fn);
}
else
{
  setTimeout(fn, 0);
}

}