         }
     
         group.notify(queue: self.searchQueue) {
+            // This read does not need to be protected by the queue given that
+            // there's no longer concurrent access at this point.
             let sorted = items.sorted { $0.score < $1.score }
             DispatchQueue.main.async {
                 completion(sorted)

        }
        
        group.notify(queue: self.searchQueue) {
            let sorted = collectionResult.sorted { $0.score < $1.score }
            DispatchQueue.main.async {
                completion(sorted)

        
        var collectionResult = [FusableSearchResult]()
        
        // Serialize writes to `collectionResult`, for thread safety.
        // This label is non-unique but that should be fine as we don't expect
        // to need to debug work items running on this queue.
        let collectionResultQueue = DispatchQueue(label: "fuse.result.queue")
        
        stride(from: 0, to: count, by: chunkSize).forEach { offset in
            let chunk = Array(aList[offset..<min(offset + chunkSize, count)])
            group.enter()
            self.searchQueue.async {
                for (index, item) in chunk.enumerated() {
