 /// The database transaction observer, support for ValueObservation.
 private class ValueObserver<Value>: TransactionObserver {
     private let region: DatabaseRegion
-    private let future: () -> Future<Value>
+    private let future: (Database) -> Future<Value>
     private let queue: DispatchQueue
     private let onChange: (Value) -> Void
     private let onError: ((Error) -> Void)?

        changed = false
        
        // Fetch future value now, from the database writer queue
        let futureValue = future()
        
        // Wait for future value in notificationQueue, in order to guarantee
        // that notifications have the same ordering as transactions.

    
    init(
        region: DatabaseRegion,
        future: @escaping (Database) -> Future<Value>,
        queue: DispatchQueue,
        onError: ((Error) -> Void)?,
        onChange: @escaping (Value) -> Void)
