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