function wrapper() {
            self.off(name, wrapper);
            action.apply(this, arguments);
        }
Register event, event will only be triggered once and then removed
@param  {string} name
@param  {Function} action
@param  {Object} [context]
@chainable