Making the disconnect() call return a deferred

Looking for consistency here, and a solid way to chain off disconnect
actions.