If one decides to switch his promise factory after actions being declared he is faced to work with old implementation of middlware because action methods that are reposnsible for async operations are hard copied at creation
var context = _.extend({
eventLabel: "action",
emitter: new _.EventEmitter(),
_isAction: true
}, PublisherMethods, ActionMethods, definition);
Instead, could it be a wrapper around methods from PublisherMethods ?