     
     init(
         region: DatabaseRegion,
-        future: @escaping () -> Future<Value>,
+        future: @escaping (Database) -> Future<Value>,
         queue: DispatchQueue,
         onError: ((Error) -> Void)?,
         onChange: @escaping (Value) -> 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.

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