feat(credential-provider-node): throw cannot load credential error from credentail chain #2408
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Resolves: #2137
Description
Previously when credential resolve chain fails to resolve the credentials, it throws the error message from the last credential provider. As a result, the error message from the credential provider chain is not helpful, when no credentials can be resolved. For example, users see
Error: TimeoutError
when no credentials can be resolved. This is because the last provider in the credential chain is the Instance Metadata Service, and it will timeout when running on local machine. Instead, we should indicate credential error in the message.With this change, if none of the provider can resolve to a valid credential, the Node.js credential provider chain will throw
CredentialsError: Could not load credentials from any providers
just like v2.The chain would also throw directly from any credential provider if the thrown error's
tryNextLink
flag is set to false. In this case users will know this is a credential error from the error nameCredentialsError: XXX is wrong
.Testing
Unit tests
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.