/// <inheritdoc /> public async Task Login() { try { semaphore.Wait(); var token = await authenticator.GetAccessTokenAsync().ConfigureAwait(false); await tokenStorage.AddTokenAsync(token).ConfigureAwait(false); } finally { semaphore.Release(); } }