code: function walkNodes(dom, fn, context) {
        if (dom) {
          var res = fn(dom, context);
          var next;
          // stop the recursion
          if (res === false) { return }
  
          dom = dom.firstChild;
  
          while (dom) {
            next = dom.nextSibling;
            walkNodes(dom, fn, res);
            dom = next;
          }
        }
      }
docs: Walk down recursively all the children tags starting dom node
  @param   { Object }   dom - starting node where we will start the recursion
  @param   { Function } fn - callback to transform the child node just found
  @param   { Object }   context - fn can optionally return an object, which is passed to children