code: func (node *ClientNode) AcceptRequest(reqID, index, maxCost uint64) (accepted bool, bufShort uint64, priority int64) {
  	node.lock.Lock()
  	defer node.lock.Unlock()
  
  	now := node.cm.clock.Now()
  	node.update(now)
  	if maxCost > node.bufValue {
  		if node.log != nil {
  			node.log.add(now, fmt.Sprintf("rejected  reqID=%d  bv=%d  maxCost=%d", reqID, node.bufValue, maxCost))
  			node.log.dump(now)
  		}
  		return false, maxCost - node.bufValue, 0
  	}
  	node.bufValue -= maxCost
  	node.sumCost += maxCost
  	if node.log != nil {
  		node.log.add(now, fmt.Sprintf("accepted  reqID=%d  bv=%d  maxCost=%d  sumCost=%d", reqID, node.bufValue, maxCost, node.sumCost))
  	}
  	node.accepted[index] = node.sumCost
  	return true, 0, node.cm.accepted(node, maxCost, now)
  }
docs: // AcceptRequest returns whether a new request can be accepted and the missing
  // buffer amount if it was rejected due to a buffer underrun. If accepted, maxCost
  // is deducted from the flow control buffer.