|  | @@ -92,7 +92,7 @@ class AsyncResult(ResultBase):
 | 
											
												
													
														|  |          self.id = id
 |  |          self.id = id
 | 
											
												
													
														|  |          self.backend = backend or self.app.backend
 |  |          self.backend = backend or self.app.backend
 | 
											
												
													
														|  |          self.parent = parent
 |  |          self.parent = parent
 | 
											
												
													
														|  | -        self.on_ready = promise(self._on_fulfilled)
 |  | 
 | 
											
												
													
														|  | 
 |  | +        self.on_ready = promise(self._on_fulfilled, weak=True)
 | 
											
												
													
														|  |          self._cache = None
 |  |          self._cache = None
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      def then(self, callback, on_error=None, weak=False):
 |  |      def then(self, callback, on_error=None, weak=False):
 | 
											
										
											
												
													
														|  | @@ -168,7 +168,7 @@ class AsyncResult(ResultBase):
 | 
											
												
													
														|  |          assert_will_not_block()
 |  |          assert_will_not_block()
 | 
											
												
													
														|  |          _on_interval = promise()
 |  |          _on_interval = promise()
 | 
											
												
													
														|  |          if follow_parents and propagate and self.parent:
 |  |          if follow_parents and propagate and self.parent:
 | 
											
												
													
														|  | -            on_interval = promise(self._maybe_reraise_parent_error)
 |  | 
 | 
											
												
													
														|  | 
 |  | +            on_interval = promise(self._maybe_reraise_parent_error, weak=True)
 | 
											
												
													
														|  |              self._maybe_reraise_parent_error()
 |  |              self._maybe_reraise_parent_error()
 | 
											
												
													
														|  |          if on_interval:
 |  |          if on_interval:
 | 
											
												
													
														|  |              _on_interval.then(on_interval)
 |  |              _on_interval.then(on_interval)
 | 
											
										
											
												
													
														|  | @@ -461,7 +461,7 @@ class ResultSet(ResultBase):
 | 
											
												
													
														|  |          self.on_ready = promise(args=(self,))
 |  |          self.on_ready = promise(args=(self,))
 | 
											
												
													
														|  |          self._on_full = ready_barrier or barrier(results)
 |  |          self._on_full = ready_barrier or barrier(results)
 | 
											
												
													
														|  |          if self._on_full:
 |  |          if self._on_full:
 | 
											
												
													
														|  | -            self._on_full.then(promise(self.on_ready))
 |  | 
 | 
											
												
													
														|  | 
 |  | +            self._on_full.then(promise(self.on_ready, weak=True))
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      def add(self, result):
 |  |      def add(self, result):
 | 
											
												
													
														|  |          """Add :class:`AsyncResult` as a new member of the set.
 |  |          """Add :class:`AsyncResult` as a new member of the set.
 | 
											
										
											
												
													
														|  | @@ -884,8 +884,8 @@ class EagerResult(AsyncResult):
 | 
											
												
													
														|  |          self._result = ret_value
 |  |          self._result = ret_value
 | 
											
												
													
														|  |          self._state = state
 |  |          self._state = state
 | 
											
												
													
														|  |          self._traceback = traceback
 |  |          self._traceback = traceback
 | 
											
												
													
														|  | -        self.on_ready = promise(args=(self,))
 |  | 
 | 
											
												
													
														|  | -        self.on_ready()
 |  | 
 | 
											
												
													
														|  | 
 |  | +        self.on_ready = promise()
 | 
											
												
													
														|  | 
 |  | +        self.on_ready(self)
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      def then(self, callback, on_error=None, weak=False):
 |  |      def then(self, callback, on_error=None, weak=False):
 | 
											
												
													
														|  |          return self.on_ready.then(callback, on_error)
 |  |          return self.on_ready.then(callback, on_error)
 |