!7 cmodule StandardFunction { switchable S functionName; transient DynamicCallable f; transient Throwable error; start { onChange(r { setModuleName("Function " + functionName); }); thread { loadFunction(); } } void loadFunction() q { try { f = loadFunctions_cached(functionName); } catch { error = } } // API S functionName() { ret functionName; } DynamicCallable callTheFunction(O... args) { while (f == null && error == null) sleep(10); if (error != null) throw rethrow(error); ret callF(f, args); } }