acquire method
Implementation
@override
Future<void> acquire({int estimatedTokens = 0}) async {
final cost = estimatedTokens > 0 ? estimatedTokens.toDouble() : 1.0;
_refill();
if (_budget >= cost && _waiters.isEmpty) {
_budget -= cost;
return;
}
final c = Completer<void>();
_waiters.add(_TpmWaiter(cost, c));
_scheduleWake();
return c.future;
}