code: function execAsCallback(genFn) {
    const args = Array.prototype.slice.call(arguments, 1);
    const callback = args.pop();
    if (typeof callback !== 'function') {
      throw new TypeError(`the last argument must be a callback function`);
    }
    return genFnToPromise(genFn).apply(this, args).then(ret => callback(null, ret)).catch(callback);
  }
docs: 执行 coroutine 函数
  
  @param {Function} genFn
  @param {Mixed} param1
  @param {Mixed} param2
  @param {Function} callback
  @return {Promise}