Most of what it takes to do that were just some interpreters and function calls. Originally established in distributed computing like Amoeba, MPP systems, and Obliq in agent-oriented systems. Might help if you think on it looking at distributed, agent, and reactive languages to see what
language aspects you think would make it easier. Then you'll be able to convey it better.
To me, it's just a VM (or source), ability to capture state, and one or more function calls. Any language could do this.
Obliq just in case you didn't know about it:
https://en.wikipedia.org/wiki/Obliq