async fn refresh_task(
federated_token_file: PathBuf,
exchange: Arc<dyn Fn(String, Vec<String>) -> BoxFuture<'static, Result<AccessToken>> + Send + Sync>,
slot: Arc<RwLock<AccessToken>>,
scopes: Vec<String>,
refresh_buffer: Duration,
retry_interval: Duration,
)Expand description
Keeps slot holding an unexpired token by fetching a replacement within
refresh_buffer of the current token’s expiry. A failed fetch leaves the
current token in place and is retried after retry_interval.