Non-blocking, as this is possibly just a bias of mine from having listened to people talk about monads and scala and haskell and whatnot - a return value being either None or a Deferred seems like a somewhat imprecise return type?  I assume this likely temporary anyway though, since as you mentioned there is a lot more cleanup to do.