Hang implies there is something you are not responding to.
Let me ask again. What are you imagining your main thread should be doing while it is waiting for essential data?
responding to new inputs means changing state. But your program is already in another. Two separate program execution states are best described by two separate threads.
> crash
Crash early, crash often. If invariants can’t be maintained, don’t pretend otherwise.