diff --git a/src/AGConnectAdmin/Messaging/AGConnectMessagingClient.cs b/src/AGConnectAdmin/Messaging/AGConnectMessagingClient.cs index 6c92e31..52b447b 100644 --- a/src/AGConnectAdmin/Messaging/AGConnectMessagingClient.cs +++ b/src/AGConnectAdmin/Messaging/AGConnectMessagingClient.cs @@ -270,20 +270,25 @@ private async Task GetAccessTokenAsync() string accessToken = tokenResponse?.GetValidAccessToken(); if (string.IsNullOrEmpty(accessToken)) { - lock (accessTokenTaskLock) + try { - if (accessTokenTask == null) + lock (accessTokenTaskLock) { - // access token task may be shared by multiple messaging task, thus should not pass cancellationToken to it - accessTokenTask = RequestAccessTokenAsync(default); + if (accessTokenTask == null) + { + // access token task may be shared by multiple messaging task, thus should not pass cancellationToken to it + accessTokenTask = RequestAccessTokenAsync(default); + } } - } - - accessToken = await accessTokenTask.ConfigureAwait(false); - lock (accessTokenTaskLock) + accessToken = await accessTokenTask.ConfigureAwait(false); + } + finally { - accessTokenTask = null; + lock (accessTokenTaskLock) + { + accessTokenTask = null; + } } }