static Either evalWithTimeoutReleasingDBLock(int timeoutMS, fO r) { bool hadLock = unlockIfHolding(dbLock()); try { ret assertNotNull(evalWithTimeout(timeoutMS, r)); } finally { if (hadLock) lock(dbLock()); } } static Either evalWithTimeoutReleasingDBLock(double timeoutSeconds, fO r) { ret evalWithTimeoutReleasingDBLock(toMS_int(timeoutSeconds), r); }