Introduces a compatibility breakage in emit(), and all callbacks receive an event object rather than a hash of key/value pairs.
Roles are all about static composition, and events are for dynamic composition. Roles that emit() events blur this distinction, so I'm deeming them to be "bad". Additionally, one of Reflex's prime directives is for consumers to decide how they'll handle things. Implementing "interface" callbacks in roles (even default ones) takes this away from the consumer. The current solution is to provide declarative helpers to define the defaults. They also make more explicit that it's the consumer's role (har) to define callbacks in all cases. This is slightly less convenient, but it's a lot cleaner. Also add vim format lines so I stop dealing with whitespace inconsistencies.
It's shorter, and it aligns the names of things with what node.js people understand.
… supporting role and class.
"emits" is a shortcut for Reflex::Trait::EmitsOnChange. "observes" is a shortcut for Reflex::Trait::Observed. Names and locations may change.
… to Reflex::Base.
For example, Reflex::Handle is deprecated in favor of Reflex::Stream, which is implemented now in terms of Reflex::Role::Streaming.
…an example TCP server.
I've stopped for the moment to shave a yak with Dist::Zilla.