public async Task GetCredentialProvidersExecutedOnlyOnce() { var counter = new CallCounter(); var service = new CredentialService(new AsyncLazy <IEnumerable <ICredentialProvider> >(() => counter.GetProviders()), nonInteractive: true, handlesDefaultCredentials: true); var uri1 = new Uri("http://uri1"); // Act var result1 = await service.GetCredentialsAsync( uri1, proxy : null, type : CredentialRequestType.Unauthorized, message : null, cancellationToken : CancellationToken.None); var result2 = await service.GetCredentialsAsync( uri1, proxy : null, type : CredentialRequestType.Unauthorized, message : null, cancellationToken : CancellationToken.None); Assert.Equal(1, counter.CallCount); }