code: function wrapCallback(resolver, promise, callback) {
          return function (data) {
  
              function work() {
                  // 可能抛异常
                  var res = callback(data);
                  // 返回结果与当前的promise对象相同
                  // 抛异常
                  // see # 2.3.1
                  if (res === promise) {
                      throw new TypeError();
                  }
  
                  resolve(resolver, res);
              }
  
              if (captureException) {
                  try {
                      work();
                  }
                  catch (e) {
                      emitExceptionEvent(e);
                      resolver.reject(e);
                  }
              }
              else {
                  work();
              }
  
          };
      }
docs: 包装then的回调参数
  使其能根据回调的返回结果设置then返回的Resolver对象状态
  
  @inner
  @param {Resolver} resolver resolver对象
  @param {Promise} promise promise对象
  @param {Function} callback 回调函数
  @return {Function}