This implements props access to the underlying items in the storage, which is supported on native (although quirky). Unlike most normal props, the underlying storage for the props is asynchronous, so it can disappear or appear at any point, so they have to be re-checked as needed. The props themselves just map a name to a DISPID, but other than that, DISP_E_MEMBERNOTFOUND can return even after a successful GetDispID for example, even if GetDispID already checked for the item (which it has to, for e.g. (x in y) check).
It also contains some fixes for enumerating props, which are needed now because these props also have to be enumerated. They are custom props, so it's needed to have GetMemberName work for them. And since they are asynchronous it makes it even more complicated when enumerating.