@@ -141,12 +141,12 @@ def running(self):
141141
142142 def done (self ):
143143 print (
144- self .ready (),
145- self .cancelled (),
146- isinstance (
144+ "Ready:" , self .ready (),
145+ "Cancelled:" , self .cancelled (),
146+ "Failed:" , isinstance (
147147 self .error ,
148148 Exception ),
149- self .running ())
149+ "Running:" , self .running ())
150150 return self .ready () or self .cancelled () or isinstance (self .error , Exception )
151151
152152 def result (self , timeout = None ):
@@ -174,16 +174,16 @@ def _run_callback(self, callback):
174174 print (e , file = stderr )
175175
176176 def add_done_callback (self , callback ):
177+ self .callbacks .append (callback )
178+ # Status may have changed while appending. Run
179+ # any remaining callbacks
177180 if self .done ():
178- self ._run_callback (callback )
179- else :
180- self .callbacks .append (callback )
181- # Status changed while appending. Run
182- # any remaining callbacks
183- if self .done ():
184- while len (self .callbacks ) > 0 :
181+ while len (self .callbacks ) > 0 :
182+ try :
185183 callback = self .callback .pop ()
186184 self ._run_callback (callback )
185+ except IndexError as e :
186+ break
187187
188188 def set_running_or_notify_cancel (self ):
189189 if self .cancelled ():
0 commit comments