I do not remember why but Mirek advised us to use user interface only in main thread.
Actually, that has changed with GuiLock. So the only thing concerning the main thread now is the fact that you do not need to use GuiLock there
Hard to say why in this case it fails. A testcase and more info about host OS would be helpful.
Also, please check whether reference/GuiLock works for you (it creates Prompts inside thread).
Thinking about it, there is one important thing to know: All GUI processing is performed in the main thread. So if you invokde PromptOK from another thred, the request is passed to the main thread to be actually executed - in a very similar way to GUI input events. So if your main thread is busy doing things (think infinite loop), Prompt request will never be processed and things will look blocked.