static A evalInQ_first(Q q, final F0 f) { if (isInQ(q)) ret callF(f); final new Var> var; q.addInFront(r { try { var.set(main. eitherA(callF(f))); } catch e { var.set(main. eitherB(e)); } }); ret returnOrThrow_either(waitForVarToBeNotNull(var)); }