   }
   
   private func multiFetchTrips(request: TKRouterRequestable, modes: Set<String>? = nil, classifier: TKTripClassifier? = nil, progress: ((UInt) -> Void)? = nil, completion: @escaping (Result<TripRequest, Error>) -> Void) -> UInt {
+    let queue = DispatchQueue(label: "com.skedgo.TripKit.multi-fetch-worker")
+    self.workerQueue = queue
+    var count: UInt = 0
+    queue.sync {
+      count = self.multiFetchTripsWorker(request: request, modes: modes, classifier: classifier, progress: progress, on: queue, completion: completion)
+    }
+    return count
+  }
+    
+  private func multiFetchTripsWorker(request: TKRouterRequestable, modes: Set<String>? = nil, classifier: TKTripClassifier? = nil, progress: ((UInt) -> Void)? = nil, on queue: DispatchQueue, completion: @escaping (Result<TripRequest, Error>) -> Void) -> UInt {
     
     let includesAllModes = request.additional.contains { $0.name == "allModes" }
     if includesAllModes {

  }
  
  public func cancelRequests() {
    workers.map(\.value).forEach { $0.cancelRequests() }
    self.workers = [:]
    self.finishedWorkers = 0

    
    if workers.isEmpty {
      // Only show an error if we found nothing
      request.context?.perform {
        if request.trips.isEmpty, let error = self.lastWorkerError {
          completion(.failure(error))
        } else {
          completion(.success(request))
        }
      }
    }
  }
