The calls to connection and datastore should all be done asynchronously. This is expected to be implemented by the Connection object popping work onto a processing queue. All jobs to one host should go to the same queue, ensuring that the order in which transfers and commands are performed is maintained.