code: function setEventHandler(name, handler, dom, tag) {
    var eventName,
      cb = handleEvent.bind(tag, dom, handler);
  
    // avoid to bind twice the same event
    // possible fix for #2332
    dom[name] = null;
  
    // normalize event name
    eventName = name.replace(RE_EVENTS_PREFIX, '');
  
    // cache the listener into the listeners array
    if (!contains(tag.__.listeners, dom)) { tag.__.listeners.push(dom); }
    if (!dom[RIOT_EVENTS_KEY]) { dom[RIOT_EVENTS_KEY] = {}; }
    if (dom[RIOT_EVENTS_KEY][name]) { dom.removeEventListener(eventName, dom[RIOT_EVENTS_KEY][name]); }
  
    dom[RIOT_EVENTS_KEY][name] = cb;
    dom.addEventListener(eventName, cb, false);
  }
docs: Attach an event to a DOM node
  @param { String } name - event name
  @param { Function } handler - event callback
  @param { Object } dom - dom node
  @param { Tag } tag - tag instance