code: func (api *Client) NewRTM(options ...RTMOption) *RTM {
  	result := &RTM{
  		Client:           *api,
  		IncomingEvents:   make(chan RTMEvent, 50),
  		outgoingMessages: make(chan OutgoingMessage, 20),
  		pingInterval:     defaultPingInterval,
  		pingDeadman:      time.NewTimer(deadmanDuration(defaultPingInterval)),
  		killChannel:      make(chan bool),
  		disconnected:     make(chan struct{}),
  		disconnectedm:    &sync.Once{},
  		forcePing:        make(chan bool),
  		rawEvents:        make(chan json.RawMessage),
  		idGen:            NewSafeID(1),
  		mu:               &sync.Mutex{},
  	}
  
  	for _, opt := range options {
  		opt(result)
  	}
  
  	return result
  }
docs: // NewRTM returns a RTM, which provides a fully managed connection to
  // Slack's websocket-based Real-Time Messaging protocol.