Future<LockGrant> acquireRead(String table) async { final lock = _lockFor(table); while (!lock.canRead) { await lock.waitFor(); } lock.readers++; return LockGrant(table, LockMode.read); }