     /// Fetch an observed value, and moves the reducer forward.
     func fetchValue(_ db: Database) throws -> Reducer.Value? {
         try recordingSelectedRegionIfNeeded(db) {
-            try lock.synchronized {
+            try synchronized {
                 try reducer.fetchAndReduce(db, requiringWriteAccess: requiresWriteAccess)
             }
         }

            if self.isCompleted { return }
            do {
                let fetchedValue = try fetchedFuture.wait()
                if let value = self.lock.synchronized("", { self.reducer._value(fetchedValue) }) {
                    self.notifyChange(value)
                }
            } catch {

    }
    
    private var needsRecordingSelectedRegion: Bool {
        observedRegion == nil || synchronized { !reducer._isSelectedRegionDeterministic }
    }
    
    private func recordingSelectedRegionIfNeeded<T>(
