title: Is ConfidentialClientApplication.AcquireTokenForClient().ExecuteAsync() thread safe?
body: <p>For service to service auth using a bearer token for the app (client id and secret no user context) in .net core using MSAL.NET v4 (nuget Microsoft.Identity.Client v4.3.0) is <code>ConfidentialClientApplication.AcquireTokenForClient().ExecuteAsync()</code> safe to use in a singleton registered service implemented like this?</p>
  
  <pre><code>public class AADConfidentialClient : IServiceApiAuthorizer
      {
          private readonly IConfidentialClientApplication _confidentialClient;
          public AADConfidentialClient(IOptions&lt;ConfidentialClientApplicationOptions&gt; options)
          {
              _confidentialClient = ConfidentialClientApplicationBuilder
                       .CreateWithApplicationOptions(options.Value)
                       .Build();
          }
  
          public async Task&lt;string&gt; GetTokenAsync(IReadOnlyCollection&lt;string&gt; scopes)
          {
              var result = await _confidentialClient.AcquireTokenForClient(scopes).ExecuteAsync();
  
              return result.AccessToken;
          }
      }
  </code></pre>
  
  <p>Registered with the .net core built-in DI as</p>
  
  <pre><code>services.AddSingleton&lt;IServiceApiAuthorizer, AADConfidentialClient&gt;();
  </code></pre>
  
  <p>I've seen this answer for ADAL.NET <a href="https://stackoverflow.com/a/53163274/184220">https://stackoverflow.com/a/53163274/184220</a> which mentions working towards thread safety for MSAL v2+ but haven't found anything confirming if this has been done.</p>