code: func (s *Serf) handleRejoin(previous []*PreviousNode) {
  	for _, prev := range previous {
  		// Do not attempt to join ourself
  		if prev.Name == s.config.NodeName {
  			continue
  		}
  
  		s.logger.Printf("[INFO] serf: Attempting re-join to previously known node: %s", prev)
  		_, err := s.memberlist.Join([]string{prev.Addr})
  		if err == nil {
  			s.logger.Printf("[INFO] serf: Re-joined to previously known node: %s", prev)
  			return
  		}
  	}
  	s.logger.Printf("[WARN] serf: Failed to re-join any previously known node")
  }
docs: // handleRejoin attempts to reconnect to previously known alive nodes