55
66import { CredentialsShim } from '../auth/deprecated/loginManager'
77import { AwsContext } from './awsContext'
8- import { AwsCredentialIdentityProvider } from '@smithy/types'
8+ import { AwsCredentialIdentityProvider , RetryStrategyV2 } from '@smithy/types'
99import { Client as IClient } from '@smithy/types'
1010import { getUserAgent } from './telemetry/util'
1111import { DevSettings } from './settings'
@@ -15,9 +15,11 @@ import {
1515 DeserializeMiddleware ,
1616 HandlerExecutionContext ,
1717 Provider ,
18+ RetryStrategy ,
1819 UserAgent ,
1920} from '@aws-sdk/types'
2021import { HttpResponse } from '@aws-sdk/protocol-http'
22+ import { ConfiguredRetryStrategy } from '@smithy/util-retry'
2123import { telemetry } from './telemetry'
2224import { getRequestId , getTelemetryReason , getTelemetryReasonDesc , getTelemetryResult } from './errors'
2325import { extensionVersion } from '.'
@@ -32,6 +34,7 @@ interface AwsConfigOptions {
3234 requestHandler : any
3335 apiVersion : string
3436 endpoint : string
37+ retryStrategy : RetryStrategy | RetryStrategyV2
3538}
3639export type AwsClientOptions = AwsConfigOptions
3740
@@ -73,6 +76,11 @@ export class DefaultAWSClientBuilderV3 implements AWSClientBuilderV3 {
7376 if ( ! opt . customUserAgent && userAgent ) {
7477 opt . customUserAgent = [ [ getUserAgent ( { includePlatform : true , includeClientId : true } ) , extensionVersion ] ]
7578 }
79+
80+ if ( ! opt . retryStrategy ) {
81+ // Simple exponential backoff strategy as default.
82+ opt . retryStrategy = new ConfiguredRetryStrategy ( 5 , ( attempt : number ) => 1000 * 2 ** attempt )
83+ }
7684 // TODO: add tests for refresh logic.
7785 opt . credentials = async ( ) => {
7886 const creds = await shim . get ( )
0 commit comments