Nikolay Sivov (@nsivov) commented about dlls/mfplat/main.c:
hr = IMFSchemeHandler_BeginCreateObject(handler, url, flags, props, cancel_cookie ? &inner_cookie : NULL, (IMFAsyncCallback *)&resolver->url_callback, (IUnknown *)result);
- if (SUCCEEDED(hr) && inner_cookie)
 resolver_create_cancel_object((IUnknown *)handler, OBJECT_FROM_URL, inner_cookie, cancel_cookie);
- if (inner_cookie)
 - {
 if (SUCCEEDED(hr))resolver_create_cancel_object((IUnknown *)handler, OBJECT_FROM_URL, inner_cookie, cancel_cookie);IUnknown_Release(inner_cookie);- }
 
Does this mean that failed BeginCreateObject() call still returns valid object? I think that's unexpected in general.