title: Using rejectUnauthorized with node-fetch in node.js
body: <p>I currently use request to make http requests in node.js.  I had at some point encountered an issue where I was getting errors that indicated UNABLE_TO_GET_ISSUER_CERT_LOCALLY.  To get around that it set rejectUnauthorized.  My working code with request looks like this:</p>
  
  <pre><code>    var url = 'someurl';
      var options = {
          url: url,
          port: 443,
          // proxy: process.env.HTTPS_PROXY, -- no need to do this as request honors env vars
          headers: {
              'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko',
              'Accept-Language': 'en-us',
              'Content-Language': 'en-us'
          },
          timeout: 0,
          encoding: null,
          rejectUnauthorized: false // added this to prevent the UNABLE_TO_GET_ISSUER_CERT_LOCALLY error
      };
      request(options, function (err, resp, body) {
          if (err) reject(err);
          else resolve(body.toString());
      });
  
  </code></pre>
  
  <p>I thought I would try switching to the fetch api using async/await and am now trying to use node-fetch to do the same thing.  However, when I do the same thing I am back to the UNABLE_TO_GET_ISSUER_CERT_LOCALLY errors.  I read that I needed to use a proxy agent and tried using the proxy-agent module but I am still not having any luck.  </p>
  
  <p>Based off of the post <a href="https://github.com/TooTallNate/node-https-proxy-agent/issues/11" rel="noreferrer">https://github.com/TooTallNate/node-https-proxy-agent/issues/11</a> I thought the following would work:</p>
  
  <pre><code>    var options = {
          headers: {
              'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko',
              'Accept-Language': 'en-us',
              'Content-Language': 'en-us'
          },
          timeout: 0,
          encoding: null
      };
      var proxyOptions = nodeurl.parse(process.env.HTTPS_PROXY);
      proxyOptions.rejectUnauthorized = false;
      options.agent = new ProxyAgent(proxyOptions);
      const resp = await fetch('someurl', options);
      return await resp.text();
  </code></pre>
  
  <p>but I still get the same error.  So far the only way I've been able to get around this using node-fetch is to set NODE_TLS_REJECT_UNAUTHORIZED=0 in my environment which I don't really want to do.  Can someone help show me how to get rejectUnauthorized to work with node-fetch (presumably using an agent but I don't honestly care how as long as it's specified as part of the request).</p>