code: func (rtm *RTM) Disconnect() error {
  	// always push into the kill channel when invoked,
  	// this lets the ManagedConnection() function properly clean up.
  	// if the buffer is full then just continue on.
  	select {
  	case rtm.killChannel <- true:
  		return nil
  	case <-rtm.disconnected:
  		return ErrAlreadyDisconnected
  	}
  }
docs: // Disconnect and wait, blocking until a successful disconnection.