> Any ideas on how we might resolve this?

If you look in `monitor.c` function `_glfwInputMonitorChange` you can see that `_glfwDestroyMonitor` is called on a disconnected screen after this callback is called. So there is no opportunity for an async api like this to work. :(

To be honest the more I read the c source code for glfw the more I realize how dangerous it is for a multi-threaded environment. It's assumptions of safety are based on the fact that most functions should not be called from other thread then the main thread. There are large amount of global state that can be potentially modified every time `poll_event` is called. :(