code: function (props, key) {
          // if property is already defined, skip it.
          if (props[key]) {
              return;
          }
          // define a local property
          // in case error property is not settable
          var name = __symbol__(key);
          props[key] = {
              configurable: true,
              enumerable: true,
              get: function () {
                  // if local property has no value
                  // use internal error's property value
                  if (!this[name]) {
                      var error_2 = this[__symbol__('error')];
                      if (error_2) {
                          this[name] = error_2[key];
                      }
                  }
                  return this[name];
              },
              set: function (value) {
                  // setter will set value to local property value
                  this[name] = value;
              }
          };
      }
docs: fix #595, create property descriptor for error properties