code: func (t *Pot) EachNeighbourAsync(val Val, pof Pof, max int, maxPos int, f func(Val, int), wait bool) {
  	if max > t.size {
  		max = t.size
  	}
  	var wg *sync.WaitGroup
  	if wait {
  		wg = &sync.WaitGroup{}
  	}
  	t.eachNeighbourAsync(val, pof, max, maxPos, f, wg)
  	if wait {
  		wg.Wait()
  	}
  }
docs: // EachNeighbourAsync called on (val, max, maxPos, f, wait) is an asynchronous iterator
  // over elements not closer than maxPos wrt val.
  // val does not need to be match an element of the Pot, but if it does, and
  // maxPos is keylength than it is included in the iteration
  // Calls to f are parallelised, the order of calls is undefined.
  // proximity order is respected in that there is no element in the Pot that
  // is not visited if a closer node is visited.
  // The iteration is finished when max number of nearest nodes is visited
  // or if the entire there are no nodes not closer than maxPos that is not visited
  // if wait is true, the iterator returns only if all calls to f are finished
  // TODO: implement minPos for proper prox range iteration