I wonder if deferred needs to be cancelled. Can it just errback with `TimeoutError` when it times out? (Not do anything with cancellation). If the caller cancels the deferred, we capture it and cancel our timeout and not effect the cancel process.