@@ -84,20 +84,25 @@ export class EnvsCollectionService extends PythonEnvsWatcher<PythonEnvCollection
8484 const  stopWatch  =  new  StopWatch ( ) ; 
8585 this . refreshStarted . fire ( ) ; 
8686 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 ) ) ; 
95100 } 
96101
97102 private  async  addEnvsToCacheFromIterator ( iterator : IPythonEnvsIterator )  { 
98103 const  seen : PythonEnvInfo [ ]  =  [ ] ; 
99104 const  state  =  { 
100-  done : true , 
105+  done : false , 
101106 pending : 0 , 
102107 } ; 
103108 const  updatesDone  =  createDeferred < void > ( ) ; 
0 commit comments