difficulty in receiving results from other contracts - they would have to send back a message to another first contract’s function.
Right. The only way a contract could get a response from another contract is asynchronously, with an “A runs, messages B, B runs, messages A, A runs more” workflow.