every time you or some code calls an operation on blockchain, it will immediately return, and put the work on the stack. The proactor loop (in boost::asio) will take the work off, call it then call the completion handler you passed when you first called the method.