import Combine import Dispatch func randomInt() -> Deferred> { Deferred { Future { promise in DispatchQueue.global().asyncAfter(deadline: .now() + 0.01) { promise(.success(.random(in: .min ... .max))) } } } } let q = PublisherQueue(size: .max) var subscriptions = Set() var resultCount = 0 let group = DispatchGroup() for _ in 1 ... 1000 { group.enter() q.queuedPublisher(randomInt()).sink(receiveCompletion: { _ in group.leave() }) { number in resultCount += 1 }.store(in: &subscriptions) } group.wait() print(resultCount, "results") // 1000 results