Yeah its certainly a much clearer call chain
Lets hope we haven't missed anything critical. The only thing that gives me a little worry is the aborting of a device job, when for example a device is yanked while many jobs are queued. I tried it and nothing terrible happened, but given the amount of concurrence, a single test is meaningless.
FD is used elsewhere as well, so I think I'll leave the is_gui_thread check in there, since it makes sense.