 
     private var wantWriteEvents = false {
         didSet {
+            guard isOpen else { return }
             switch (oldValue, wantWriteEvents) {
                 case (true, false): wsource.suspend()
                 case (false, true): wsource.resume()


    private var wantReadEvents = false {
        didSet {
            switch (oldValue, wantReadEvents) {
                case (true, false): rsource.suspend()
                case (false, true): rsource.resume()

            } else {
                didDisconnect()
            }
        }
    }

