diff --git a/RxSwift/Observables/Implementations/Delay.swift b/RxSwift/Observables/Implementations/Delay.swift index f90fa350..5b725a7a 100644 --- a/RxSwift/Observables/Implementations/Delay.swift +++ b/RxSwift/Observables/Implementations/Delay.swift @@ -38,13 +38,14 @@ class DelaySink // } default: let delayDisposable = SingleAssignmentDisposable() - if let _ = _group.addDisposable(delayDisposable) { - delayDisposable.disposable = _scheduler.scheduleRecursive((), dueTime: _dueTime) { _ in - self.forwardOn(event) + if let key = _group.addDisposable(delayDisposable) { + delayDisposable.disposable = _scheduler.scheduleRecursive((self, key), dueTime: _dueTime) { state, _ in + let (sink, key) = state + sink.forwardOn(event) + sink._group.removeDisposable(key) if event.isStopEvent { - self.dispose() + sink.dispose() } - delayDisposable.dispose() } } }