Run canceller first to allow it to generate correct error

This commit is contained in:
Erik Johnston 2018-09-19 11:04:42 +01:00
parent 6bbe3d5732
commit 6c48aa0256
1 changed files with 5 additions and 2 deletions

View File

@ -421,11 +421,14 @@ def timeout_deferred(deferred, timeout, reactor, on_timeout_cancel=None):
def time_it_out(): def time_it_out():
timed_out[0] = True timed_out[0] = True
try:
deferred.cancel()
except: # noqa: E722, if we throw any exception it'll break time outs
logger.exception("Canceller failed during timeout")
if not new_d.called: if not new_d.called:
new_d.errback(DeferredTimeoutError(timeout, "Deferred")) new_d.errback(DeferredTimeoutError(timeout, "Deferred"))
deferred.cancel()
delayed_call = reactor.callLater(timeout, time_it_out) delayed_call = reactor.callLater(timeout, time_it_out)
def convert_cancelled(value): def convert_cancelled(value):