@@ -86,20 +86,25 @@ export class EnvsCollectionService extends PythonEnvsWatcher<PythonEnvCollection
8686 const stopWatch = new StopWatch ( ) ;
8787 this . refreshStarted . fire ( ) ;
8888 const iterator = this . locator . iterEnvs ( query ) ;
89- const refreshPromiseForQuery = this . addEnvsToCacheFromIterator ( iterator ) ;
90- this . refreshPromises . set ( query , refreshPromiseForQuery ) ;
91- return refreshPromiseForQuery . then ( async ( ) => {
92- this . refreshPromises . delete ( query ) ;
93- sendTelemetryEvent ( EventName . PYTHON_INTERPRETER_DISCOVERY , stopWatch . elapsedTime , {
94- interpreters : this . cache . getAllEnvs ( ) . length ,
95- } ) ;
96- } ) ;
89+ const deferred = createDeferred < void > ( ) ;
90+ // Ensure we set this before we trigger the promise to correctly indicate when a refresh has started.
91+ this . refreshPromises . set ( query , deferred . promise ) ;
92+ const promise = this . addEnvsToCacheFromIterator ( iterator ) ;
93+ return promise
94+ . then ( async ( ) => {
95+ deferred . resolve ( ) ;
96+ this . refreshPromises . delete ( query ) ;
97+ sendTelemetryEvent ( EventName . PYTHON_INTERPRETER_DISCOVERY , stopWatch . elapsedTime , {
98+ interpreters : this . cache . getAllEnvs ( ) . length ,
99+ } ) ;
100+ } )
101+ . catch ( ( ex ) => deferred . reject ( ex ) ) ;
97102 }
98103
99104 private async addEnvsToCacheFromIterator ( iterator : IPythonEnvsIterator ) {
100105 const seen : PythonEnvInfo [ ] = [ ] ;
101106 const state = {
102- done : true ,
107+ done : false ,
103108 pending : 0 ,
104109 } ;
105110 const updatesDone = createDeferred < void > ( ) ;
0 commit comments