docs: function addAsyncPropsToPropPrototype(defaultProps, propTypes) {
    const defaultValues = {};
  
    const descriptors = {
      // Default "resolved" values for async props, returned if value not yet resolved/set.
      _asyncPropDefaultValues: {
        enumerable: false,
        value: defaultValues
      },
      // Shadowed object, just to make sure "early indexing" into the instance does not fail
      _asyncPropOriginalValues: {
        enumerable: false,
        value: {}
      }
    };
  
    // Move async props into shadow values
    for (const propName in propTypes) {
      const propType = propTypes[propName];
      const {name, value} = propType;
  
      // Note: async is ES7 keyword, can't destructure
      if (propType.async) {
        defaultValues[name] = value;
        descriptors[name] = getDescriptorForAsyncProp(name, value);
      }
    }
  
    Object.defineProperties(defaultProps, descriptors);
  }