Yeah. It makes sense to be separate as it becomes easier to test. 
> Unrelated, but I was also thinking about just having a generic 'time_deferrred' function that takes a callable that returns a deferred, a callable that formats a log message for success and a callable that formats a log message for error 

Would https://github.com/rackerlabs/otter/blob/as-218-delete-on-task-state/otter/util/deferredutils.py#L185 make sense? If so, do you think it could be changed? If don't, just don't bother about it. It will be nice if that can be a separate PR.