On 19/02/2019 11:41, Adi Roiban wrote:
I think it was introduced to catch some common bad usage patterns ...
like yours :)
Not a massively helpful comment.
If you want to chain the deferreds, use the dedicated helper
https://twistedmatrix.com/documents/current/core/howto/defer.html#chaining-deferreds
Deferred are not always 100% resolved/called.
You might have a deferred called, but the current result might be
another deferred... so it has no final result yet.
----
so in your case, instead of `returnValue(result)` use
result = yield result
returnValue(result)
in this way, the result is resolved :)
The methods being hooked don't necessarily return deferreds.
I'd like it to be an explicit choice of the caller, ie:
result = yield SomeProtocol.onMessage.called()
# okay, we got here, we know onMessage was called,
# now we might want to tick a clock, or otherwise simulate
# async state manipulation.
# now I want to make sure the deferred chain on the onMessage result has
been completed:
yield result
cheers,
Chris
_______________________________________________
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
https://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python