code: function yieldable (val, cb, opts) {
    if (isPromise(val)) {
      // Promise
      val.then(function (value) {
        cb(null, value)
      }, function (err) {
        cb(err || new Error())
      })
      return true
    } else if (isGeneratorFunction(val) || isGenerator(val)) {
      // Generator
      _raco.call(this, val, null, cb, opts)
      return true
    } else if (isFunction(val)) {
      // Thunk
      val(cb)
      return true
    } else {
      // Not yieldable
      return false
    }
  }
docs: yieldable resolver
  
  @param {*} val - value to resolve
  @param {function} cb - callback function
  @returns {boolean} denote yieldable