Quick answer: Godot 4 load_threaded_get blocking forever when the resource fails to load? Failure status not checked - poll load_threaded_get_status before calling get.
Bad asset path. load_threaded_get hangs; main thread frozen.
Poll status first
var status = ResourceLoader.load_threaded_get_status(path)
if status == ResourceLoader.THREAD_LOAD_FAILED:
push_error("load failed: %s" % path)
return nullCheck status; only call get when LOADED. Skip when FAILED.
Or timeout the load
Track start time; abandon after N seconds. The async resource leaks; better than a frozen game.
Validate paths at edit time
Most load failures are typos. A startup pass that loads every path catches them before runtime.
“Async APIs can fail. Failure detection has to be explicit.”
Build a 'safe load' helper around load_threaded with timeout and error logging. Misuse-resistant; default for new code.