The tests have an explicit wait so it doesn't look like they are already completed upon return.
That's to help Testbot with old Win10's. On Win11 they are completed at once, I separately tested that Invoke is called from the same thread id which sets the handler, quite reliably here. If you think that helps, I can adapt the test to mark the wait case as broken and test a bit more details for the modern Windows path.
Introducing more complicated functioning with routing the completion truely async which has potential of breaking stuff because apps may not account for real async when it is always sync on Windows doesn't seem to be the right way? I wouldn't like to do that. I think it is rather common patter in WinRT to use IAsyncOperation wrappers to uniformly wrap what is actually always sync. Like in windows.media.speech in commit 84cd975748b8609feb19d9083f6486ebf0720461 where all the actual handling has been done async already and that status is always ready when async result can be requested.