/// <inheritdoc /> public async Task Logout() { try { semaphore.Wait(); var token = await tokenStorage.GetTokeAsync(); if (token != null) { await authenticator.RevokeTokenAsync(token); await tokenStorage.AddTokenAsync(null).ConfigureAwait(false); } } finally { semaphore.Release(); } }