JSFiddle - React, Tailwind, and code Playground

HTML

<script src='http://ls.zloirock.ru/core.min.js'></script>

JavaScript

function Y(fn){
  function next(){
    setImmediate.apply(global, [fn, next].concat(Array.from(arguments)));
  }
  next.apply(this, Array.slice(arguments, 1));
}
console.time('Y');
Y(function(next, num){
  if(++num < 100000)next(num);
  else console.timeEnd('Y');
}, 0);