I think an easy way of explaining it is to compare it with what `Y.soon` currently does.  Every time you call `Y.soon`, it internally calls `setImmediate` (or which ever polyfill implementation is defined).  The result of this is that each callback function passed to `Y.soon` will run in its own turn of the event loop.  In contrast, not every call to `asap` will call `setImmediate`.  If multiple calls are made to `asap` within a single turn of the event loop, the callback functions are added to an internal queue, `setImmediate` is called once and its callback flushes the queue.  A while loop is used to iterate through each callback function in the queue: https://github.com/kriskowal/asap/blob/master/asap.js#L43  This while loop acts kind of like its own mini event loop.  So all the callback functions will run in a future turn of the event loop from when `asap` was called, therefore it's unlikely to result in unexpected synchronicity.  The difference is that all the callback functions run together in the same turn of the event loop.  This is a clever trick that improves performance in some situations by not being completely async but without breaking most async code.