/// <summary> /// Ensures the <see cref="Session" /> gets valid access token. /// </summary> internal async Task <AccessToken> GetValidAccessToken(bool forceRefresh = false) { try { ReauthenticateMutex.WaitOne(); if (forceRefresh) { AccessToken.Expire(); } if (IsValidAccessToken()) { return(AccessToken); } await Reauthenticate(); return(AccessToken); } finally { ReauthenticateMutex.Release(); } }
protected virtual void Dispose(bool disposing) { if (!disposing) { return; } ReauthenticateMutex?.Dispose(); RpcClient?.Dispose(); HttpClient?.Dispose(); }