code: function (name, fn, ctx) {
          // If the context is not passed, use `this`.
          ctx = ctx || this;
  
          var self = this;
  
          function onHandler() {
              fn.apply(ctx, arguments);
              self.off(name, onHandler);
          }
  
          this.on(name, onHandler, ctx);
  
          return this;
      }
docs: Register listener.
  Remove them after once event triggered.
  
  @param {string} name
  @param {Function} fn
  @param {Object} [ctx]