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

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

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