Why should the behaviour be changing here? None of the other event loops require callers to keep references to the values they pass in, so this isn't compatible.

If you're suggesting we change all the other event loops to match TornadoEventLoop, would you mind explaining?

We might be able to use the recently updated signals code that allows callers choose whether to have a weak or strong reference to their callback and args instead.