Hey Mauro, the behavior you're seeing is "correct".. even if confusing.
The initial handshake and on_open will happen inside of a fiber, but consequent calls are scheduled later by the reactor (whenever the message comes in). When that happens, the block is called directly, and we're already outside of the context of the original fiber. With that in mind, two things you could do:
(a) write the code inside of those handlers as async
(b) wrap the blocks inside of a fiber.. just as you are at the moment.
ig
P.S. Syntax sugar for send -- there should be something cleaner!