private async Task <string> GetAccessTokenAsync() { string accessToken = tokenResponse?.GetValidAccessToken(); if (string.IsNullOrEmpty(accessToken)) { lock (accessTokenTaskLock) { if (accessTokenTask == null) { // access token task may be shared by multiple messaging task, thus should not pass cancellationToken to it accessTokenTask = RequestAccessTokenAsync(default);