title: FetchError: invalid json response body
body: <p>I'm using node-fetch to send some json data to an IFTTT restpoint. The data is successfully sent to the endpoint, but I'm getting an error in my NodeJS console. As you can see, it returns undefined then says there was an invalid json response body. I inspected the body and it looks fine to me. </p>
  
  <p>What is the problem? </p>
  
  <pre><code>  async function checkTemperatureRange() {
      try {
        const temperatureSettings = await getTemperatureSetting();
        const currentTemperature = await getCurrentTemperature();
  
        if (currentTemperature &lt; temperatureSettings.min_temp || currentTemperature &gt; temperatureSettings.max_temp) {
          console.log('Temp NOT in range!');
          const body = { value1: currentTemperature };
          fetch('https://maker.ifttt.com/trigger/temp_reading/with/key/abc123', {
            method: 'post',
            body:    JSON.stringify(body),
            headers: { 'Content-Type': 'application/json' },
          })
          .then(function (res) {
            res.json()
          })
          .then(function (json) {
            console.log(json)
          })
          .catch(function (err) {
            console.log('node-fetch error: ', err)
          });
        }
        else {
          console.log('Temp in range :)');
        }
      } catch(error) {
        console.error(error);
      } 
    }
  </code></pre>
  
  <p>Error </p>
  
  <pre><code>undefined
  
  (node:7488) UnhandledPromiseRejectionWarning: FetchError: invalid json response body at https://maker.ifttt.com/trigger/temp_reading/with/key/abc123 reason: Unexpected token C in JSON at position 0
      at C:\Users\leke\dev\code-training-camp-demo\node_modules\node-fetch\lib\index.js:272:32
      at &lt;anonymous&gt;
      at process._tickCallback (internal/process/next_tick.js:188:7)
  (node:7488) UnhandledPromiseRejectionWarning: Unhandled promise rejection. 
  
  This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 2)
  (node:7488) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
  </code></pre>
  
  <p><strong>Edit</strong></p>
  
  <p>If I <code>console.log(res)</code> I get</p>
  
  <pre><code>Response {
    size: 0,
    timeout: 0,
    [Symbol(Body internals)]:
     { body:
        PassThrough {
          _readableState: [Object],
          readable: true,
          domain: null,
          _events: [Object],
          _eventsCount: 3,
          _maxListeners: undefined,
          _writableState: [Object],
          writable: false,
          allowHalfOpen: true,
          _transformState: [Object] },
       disturbed: false,
       error: null },
    [Symbol(Response internals)]:
     { url: 'https://maker.ifttt.com/trigger/temp_reading/with/key/abc123',
       status: 400,
       statusText: 'Bad Request',
       headers: Headers { [Symbol(map)]: [Object] },
       counter: 0 } }
  </code></pre>
  
  <p>So is it to do with the Bad request? </p>