code: func (node *ServerNode) ReceivedReply(reqID, bv uint64) {
  	node.lock.Lock()
  	defer node.lock.Unlock()
  
  	now := node.clock.Now()
  	node.recalcBLE(now)
  	if bv > node.params.BufLimit {
  		bv = node.params.BufLimit
  	}
  	sc, ok := node.pending[reqID]
  	if !ok {
  		return
  	}
  	delete(node.pending, reqID)
  	cc := node.sumCost - sc
  	newEstimate := uint64(0)
  	if bv > cc {
  		newEstimate = bv - cc
  	}
  	if newEstimate > node.bufEstimate {
  		// Note: we never reduce the buffer estimate based on the reported value because
  		// this can only happen because of the delayed delivery of the latest reply.
  		// The lowest estimate based on the previous reply can still be considered valid.
  		node.bufEstimate = newEstimate
  	}
  
  	node.bufRecharge = node.bufEstimate < node.params.BufLimit
  	node.lastTime = now
  	if node.log != nil {
  		node.log.add(now, fmt.Sprintf("received  reqID=%d  bufEst=%d  reportedBv=%d  sumCost=%d  oldSumCost=%d", reqID, node.bufEstimate, bv, node.sumCost, sc))
  	}
  }
docs: // ReceivedReply adjusts estimated buffer value according to the value included in
  // the latest request reply.