     controller: FetchedRecordsController<Record>,
     fetchAlongside: @escaping (Database) throws -> T,
     itemsAreIdentical: @escaping ItemComparator<Record>,
+    willProcessTransaction: @escaping () -> (),
     willChange: ((FetchedRecordsController<Record>, _ fetchedAlongside: T) -> ())?,
     onChange: ((FetchedRecordsController<Record>, Record, FetchedRecordChange) -> ())?,
-    didChange: ((FetchedRecordsController<Record>, _ fetchedAlongside: T) -> ())?
+    didChange: ((FetchedRecordsController<Record>, _ fetchedAlongside: T) -> ())?,
+    didProcessTransaction: @escaping () -> ()
     ) -> (FetchedRecordsObserver<Record>) -> ()
 {
     // Make sure we keep a weak reference to the fetched records controller,

/// You use FetchedRecordsController to track changes in the results of an
/// SQLite request.
///

    //
    // Should controller become strong at any point before callbacks are
    // called, such unowned reference would have an opportunity to crash.
    return makeFetchFunction(controller: controller, fetchAlongside: fetchAlongside, willProcessTransaction: willProcessTransaction) { [weak controller] result in
        // Return if fetched records controller has been deallocated
        guard let callbackQueue = controller?.queue else { return }
        
