Uhmm, I don't understand what you mean saying that TryClose is asynchronous. As far as I can see, the call to TryClose is definitely synchronous on the Dispatcher.
I could not understand something regarding your scenario: you say that you override TryClose to prevent the screen from closing and that you need to avoid switching under certain conditions. I am wondering why can't you embed this logic in a custom Conductor,
since it should be the simplest way to handle such situation.
What I mean is that you could expose a property on your screens stating if they are ready to be closed, and create a custom conductor to check such property before performing the switch.
Can you see some issues with this approach?