You can do either in Lua pretty easily, too. Doing both doesn't make much sense, though - schlepping around large data structures in message-passing can be a performance problem, but unlike coroutines, can be very easily switched to a run over multiple machines.
Coroutines are in the core language, and there's also ConcurrentLua (http://concurrentlua.luaforge.net/) for message passing.