code: function(name, action, context) {
          if (!name || !action) {
              return;
          }
          var self = this;
          function wrapper() {
              self.off(name, wrapper);
              action.apply(this, arguments);
          }
          return this.on(name, wrapper, context);
      }
docs: Register event, event will only be triggered once and then removed
  @param  {string} name
  @param  {Function} action
  @param  {Object} [context]
  @chainable