Merge pull request #6291 from matrix-org/erikj/fix_cache_descriptor

Make ObservableDeferred.observe() always return deferred.
This commit is contained in:
Erik Johnston 2019-10-30 14:06:34 +01:00 committed by GitHub
commit e5c3a99091
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 9 additions and 7 deletions

View file

@ -86,11 +86,12 @@ class ObservableDeferred(object):
deferred.addCallbacks(callback, errback)
def observe(self):
def observe(self) -> defer.Deferred:
"""Observe the underlying deferred.
Can return either a deferred if the underlying deferred is still pending
(or has failed), or the actual value. Callers may need to use maybeDeferred.
This returns a brand new deferred that is resolved when the underlying
deferred is resolved. Interacting with the returned deferred does not
effect the underdlying deferred.
"""
if not self._result:
d = defer.Deferred()
@ -105,7 +106,7 @@ class ObservableDeferred(object):
return d
else:
success, res = self._result
return res if success else defer.fail(res)
return defer.succeed(res) if success else defer.fail(res)
def observers(self):
return self._observers