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

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

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