code: function getClientIpFromXForwardedFor(value) {
      if (!is.existy(value)) {
          return null;
      }
  
      if (is.not.string(value)) {
          throw new TypeError(`Expected a string, got "${typeof value}"`);
      }
  
      // x-forwarded-for may return multiple IP addresses in the format:
      // "client IP, proxy 1 IP, proxy 2 IP"
      // Therefore, the right-most IP address is the IP address of the most recent proxy
      // and the left-most IP address is the IP address of the originating client.
      // source: http://docs.aws.amazon.com/elasticloadbalancing/latest/classic/x-forwarded-headers.html
      // Azure Web App's also adds a port for some reason, so we'll only use the first part (the IP)
      const forwardedIps = value.split(',').map((e) => {
          const ip = e.trim();
          if (ip.includes(':')) {
              const splitted = ip.split(':');
              // make sure we only use this if it's ipv4 (ip:port)
              if (splitted.length === 2) {
                  return splitted[0];
              }
          }
          return ip;
      });
  
      // Sometimes IP addresses in this header can be 'unknown' (http://stackoverflow.com/a/11285650).
      // Therefore taking the left-most IP address that is not unknown
      // A Squid configuration directive can also set the value to "unknown" (http://www.squid-cache.org/Doc/config/forwarded_for/)
      return forwardedIps.find(is.ip);
  }
docs: Parse x-forwarded-for headers.
  
  @param {string} value - The value to be parsed.
  @return {string|null} First known IP address, if any.