@@ -162,25 +162,30 @@ export class RegionProvider {
162162 remote : ( ) => Endpoints | Promise < Endpoints >
163163 } ) : RegionProvider {
164164 const instance = new this ( )
165+ void instance . init ( endpointsProvider )
166+ return instance
167+ }
165168
166- async function load ( ) {
167- getLogger ( ) . info ( 'endpoints: retrieving AWS endpoints data' )
168- instance . loadFromEndpoints ( await endpointsProvider . local ( ) )
169-
170- try {
171- instance . loadFromEndpoints ( await endpointsProvider . remote ( ) )
172- } catch ( err ) {
173- getLogger ( ) . warn (
174- `endpoints: failed to load from remote source, region data may appear outdated: %s` ,
175- err
176- )
177- }
169+ async init ( endpointsProvider : {
170+ local : ( ) => Endpoints | Promise < Endpoints >
171+ remote : ( ) => Endpoints | Promise < Endpoints >
172+ } ) {
173+ getLogger ( ) . info ( 'endpoints: retrieving AWS endpoints data' )
174+
175+ try {
176+ this . loadFromEndpoints ( await endpointsProvider . local ( ) )
177+ } catch ( err ) {
178+ getLogger ( ) . warn ( `endpoints: failed to load from local source: %s` , err )
178179 }
179180
180- load ( ) . catch ( ( err ) => {
181- getLogger ( ) . error ( 'Failure while loading Endpoints Manifest: %s' , err )
181+ try {
182+ this . loadFromEndpoints ( await endpointsProvider . remote ( ) )
183+ } catch ( err ) {
184+ getLogger ( ) . warn ( `endpoints: failed to load from remote source, region data may appear outdated: %s` , err )
185+ }
182186
183- return vscode . window . showErrorMessage (
187+ if ( this . getRegions ( ) . length === 0 ) {
188+ void vscode . window . showErrorMessage (
184189 `${ localize (
185190 'AWS.error.endpoint.load.failure' ,
186191 'The {0} Toolkit was unable to load endpoints data.' ,
@@ -190,9 +195,7 @@ export class RegionProvider {
190195 'Toolkit functionality may be impacted until VS Code is restarted.'
191196 ) } `
192197 )
193- } )
194-
195- return instance
198+ }
196199 }
197200}
198201
0 commit comments