code: function cb(thisArg, handler) {
    return new exports.Promise((resolve, reject) => {
      const args = Array.prototype.slice.call(arguments, 2);
      args.push((err, ret) => {
        if (err) {
          reject(err);
        } else {
          resolve(ret);
        }
      });
      if (typeof handler !== 'function') {
        if (!thisArg) {
          return reject(new TypeError(`handler must be a function, but got type "${ typeof handler }"`));
        }
        const fn = thisArg[handler];
        if (typeof fn !== 'function') {
          return reject(new TypeError(`handler "${ handler }" must be a function, but got type "${ typeof handler }"`));
        }
        handler = fn;
      }
      handler.apply(thisArg, args);
    });
  }
docs: 调用一个 callback 方式的函数，返回一个 Promise
  
  ```
  my.hello(1, 2, (err, ret) => console.log(err, ret))
  cb(my, 'hello', 1, 2).then(ret => console.log(ret)).catch(err => console.log(err))
  ```
  
  @param {Object} thisArg
  @param {Function|String} handler
  @param {Mixed} param1
  @param {Mixed} param2
  @return {Promise}