public async Task LoginIfNeeded(BlueClient client, CancellationToken token = default) { if (_creds != null && DateTime.UtcNow < _creds.Expiration.AddMinutes(-5)) { return; } // Re-login LoginResponse credentials = await client.LoginWithUsernamePassword(_username, _password, token); _creds = credentials.Credentials; _immutableCredentials = new ImmutableCredentials(_creds.AccessKey, _creds.SecretKey, _creds.SessionToken); }