Future<T> withRead<T>(String table, Future<T> Function() fn) async { final grant = await acquireRead(table); try { return await fn(); } finally { release(grant); } }