code: function parseLink (node, nodeType, feedType) {
    var linkVal, id;
  
    var getLink = function (linkNode) {
      var link = null;
  
      utils.parse(linkNode, function (linkEl) {
        var linkAttr = linkEl['@'];
  
        if (linkAttr.href) { // Mostly Atom
          if (!linkAttr.type || linkAttr.type === 'text/html') {
            //alternate is what we are looking for so break out of loop if found
            if (linkAttr.rel === 'alternate') {
              link = linkAttr.href;
              return true;
            } else if (linkAttr.rel === 'self' || !link) {
              link = linkAttr.href;
            }
          }
        } else if (!link || feedType === 'rss') { // Mostly RSS
          //if link text is defined break out of loop
          if (link = utils.get(linkEl)) {
            return true;
          }
        }
      }, this, true);
  
      return link;
    };
  
    linkVal = getLink(node.link) || (nodeType === 'meta' && (getLink(node['atom:link']) || getLink(node['atom10:link'])));
  
    if (!linkVal) {
      id = nodeType === 'meta' ? utils.get(node['atom:id']) : utils.get(node.guid);
      if (id && /^https?:/.test(id)) {
        linkVal = id;
      }
    }
  
    return linkVal;
  }
docs: Parses the link of a meta or item node.  If no link is available, fallback on atom:id for meta or guid for item nodes
  
  - link
  - highest priority and quantity in RSS and ATOM feeds for both meta and item nodes.
  - atom:link
  - next highest priority and quantity in RSS feeds for meta nodes.
  - rarely found in ATOM feeds or item nodes if ever.
  - atom10:link
  - next highest priority in RSS feeds for meta nodes.
  - rarely found in ATOM feeds or item nodes if ever.
  
  @param node
  @param nodeType
  @param feedType
  @returns {string}