code: func (k *Kademlia) callable(e *entry) bool {
  	// not callable if peer is live or exceeded maxRetries
  	if e.conn != nil || e.retries > k.MaxRetries {
  		return false
  	}
  	// calculate the allowed number of retries based on time lapsed since last seen
  	timeAgo := int64(time.Since(e.seenAt))
  	div := int64(k.RetryExponent)
  	div += (150000 - rand.Int63n(300000)) * div / 1000000
  	var retries int
  	for delta := timeAgo; delta > k.RetryInterval; delta /= div {
  		retries++
  	}
  	// this is never called concurrently, so safe to increment
  	// peer can be retried again
  	if retries < e.retries {
  		log.Trace(fmt.Sprintf("%08x: %v long time since last try (at %v) needed before retry %v, wait only warrants %v", k.BaseAddr()[:4], e, timeAgo, e.retries, retries))
  		return false
  	}
  	// function to sanction or prevent suggesting a peer
  	if k.Reachable != nil && !k.Reachable(e.BzzAddr) {
  		log.Trace(fmt.Sprintf("%08x: peer %v is temporarily not callable", k.BaseAddr()[:4], e))
  		return false
  	}
  	e.retries++
  	log.Trace(fmt.Sprintf("%08x: peer %v is callable", k.BaseAddr()[:4], e))
  
  	return true
  }
docs: // callable decides if an address entry represents a callable peer