diff --git a/Sources/Subjects/ReplaySubject.swift b/Sources/Subjects/ReplaySubject.swift index a97bec3..4be4d0c 100644 --- a/Sources/Subjects/ReplaySubject.swift +++ b/Sources/Subjects/ReplaySubject.swift @@ -72,6 +72,10 @@ public final class ReplaySubject: Subject { } subscriptions.forEach { $0.forwardCompletionToBuffer(completion) } + + lock.lock() + defer { self.lock.unlock() } + self.subscriptions.removeAll() } public func send(subscription: Combine.Subscription) { @@ -138,7 +142,6 @@ extension ReplaySubject { func forwardCompletionToBuffer(_ completion: Subscribers.Completion) { demandBuffer?.complete(completion: completion) - cancel() } func request(_ demand: Subscribers.Demand) {