code: function Scheduler(async) {
  		this._async = async;
  		this._running = false;
  
  		this._queue = this;
  		this._queueLen = 0;
  		this._afterQueue = {};
  		this._afterQueueLen = 0;
  
  		var self = this;
  		this.drain = function() {
  			self._drain();
  		};
  	}
docs: Credit to Twisol (https://github.com/Twisol) for suggesting this type of extensible queue + trampoline approach for next-tick conflation. 
  Async task scheduler
  @param {function} async function to schedule a single async function
  @constructor