code: func (c *Client) lanEventHandler() {
  	var numQueuedEvents int
  	for {
  		numQueuedEvents = len(c.eventCh)
  		if numQueuedEvents > serfEventBacklogWarning {
  			c.logger.Printf("[WARN] consul: number of queued serf events above warning threshold: %d/%d", numQueuedEvents, serfEventBacklogWarning)
  		}
  
  		select {
  		case e := <-c.eventCh:
  			switch e.EventType() {
  			case serf.EventMemberJoin:
  				c.nodeJoin(e.(serf.MemberEvent))
  			case serf.EventMemberLeave, serf.EventMemberFailed, serf.EventMemberReap:
  				c.nodeFail(e.(serf.MemberEvent))
  			case serf.EventUser:
  				c.localEvent(e.(serf.UserEvent))
  			case serf.EventMemberUpdate: // Ignore
  			case serf.EventQuery: // Ignore
  			default:
  				c.logger.Printf("[WARN] consul: unhandled LAN Serf Event: %#v", e)
  			}
  		case <-c.shutdownCh:
  			return
  		}
  	}
  }
docs: // lanEventHandler is used to handle events from the lan Serf cluster