Future<T> synchronized<T>(Future<T> Function() operation) async { await _acquireLock(); try { return await operation(); } finally { _releaseLock(); } }