|                                  |  | 'use strict';
function ready(flagOrFunction) {  this._ready = !!this._ready;  this._readyCallbacks = this._readyCallbacks || [];
  if (arguments.length === 0) {    // return a promise
    // support `this.ready().then(onready);` and `yield this.ready()`;
    return new Promise(function (resolve) {      if (this._ready) {        return resolve();      }      this._readyCallbacks.push(resolve);    }.bind(this));  } else if (typeof flagOrFunction === 'function') {    this._readyCallbacks.push(flagOrFunction);  } else {    this._ready = !!flagOrFunction;  }
  if (this._ready) {    this._readyCallbacks.splice(0, Infinity).forEach(function(callback) {      process.nextTick(callback);    });  }}
function mixin(object) {  object.ready = ready;}
module.exports = mixin;module.exports.mixin = mixin;
 |