Yes, that pretty much describes it - and it is also how it actually is made. There is the while-loop like  CDirectory::GetDirectory() , only difference is there are multiple steps.
But  I suspect CDirectory::GetDirectory() would also get into trouble if (for some reason) it got called re-entrantly when doing ProcessRenderLoop() with a request to open same directory again. As I read the code it would bring up yet a new Dialog as opposed to render the first that was shown? That is the situation wakeOnAccess ran into.
(I will update PR with changes based on review so far)