code: func (h *Hive) connect() {
  	for range h.ticker.C {
  
  		addr, depth, changed := h.SuggestPeer()
  		if h.Discovery && changed {
  			NotifyDepth(uint8(depth), h.Kademlia)
  		}
  		if addr == nil {
  			continue
  		}
  
  		log.Trace(fmt.Sprintf("%08x hive connect() suggested %08x", h.BaseAddr()[:4], addr.Address()[:4]))
  		under, err := enode.ParseV4(string(addr.Under()))
  		if err != nil {
  			log.Warn(fmt.Sprintf("%08x unable to connect to bee %08x: invalid node URL: %v", h.BaseAddr()[:4], addr.Address()[:4], err))
  			continue
  		}
  		log.Trace(fmt.Sprintf("%08x attempt to connect to bee %08x", h.BaseAddr()[:4], addr.Address()[:4]))
  		h.addPeer(under)
  	}
  }
docs: // connect is a forever loop
  // at each iteration, ask the overlay driver to suggest the most preferred peer to connect to
  // as well as advertises saturation depth if needed