token method
Implementation
@override
Future<String> token() {
final c = _cached;
if (c != null && c.expiresAt.difference(DateTime.now()) > _skew) {
return Future.value(c.token);
}
// Collapse concurrent refreshes into one request.
return _inflight ??= _fetchGrant().then((g) {
_cached = g;
return g.token;
}).whenComplete(() => _inflight = null);
}