         _parent.lock.performLocked {
             switch event {
             case .Next:
-                _parent.__observer = _parent.observer
+                _parent._forwardElements = true
                 _singleAssignmentDisposable.dispose()
             case .Error(let e):
                 _parent._observer?.onError(e)

    func on(event: Event<E>) {
        switch event {
        case .Next:
            __observer?.on(event)
        case .Error:
            observer?.on(event)
            dispose()
        case .Completed:
            __observer?.on(event)
            _singleAssignmentDisposable.dispose()
        }
    }

    typealias E = ElementType
    typealias Parent = SkipUntil<E, Other>
    
    let lock = NSRecursiveLock()
    private let _parent: Parent
    private var _forwardElements = false
    
    private let _singleAssignmentDisposable = SingleAssignmentDisposable()
    
