title: How do I use axios within ExpressJS?
body: <p>I want to be able to use my React app to make a GET request to my server, which is suppose to prompt my server to make an GET request to an external API. 
  I'm using axios and tried using request but both are giving me ERRTIMEOUT. 
  The request are definitely working as I've tried on my frontend application and the requests work    </p>
  
  <pre><code>const express = require("express");
  const axios = require("axios");
  const router = express.Router();
  
  router.get("/test", (req, res, next) =&gt; {
      console.log("'/test' call");
      axios.get("https://api.neoscan.io/api/main_net/v1/get_all_nodes")
         .then(data =&gt; res.json(data))
         .catch(err =&gt; res.secn(err));
  })
  
  module.exports = router;`
  </code></pre>
  
  <p>The error code</p>
  
  <pre><code>GGWP! { Error: connect ETIMEDOUT 104.25.167.105:443
      at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1113:14)
    errno: 'ETIMEDOUT',
    code: 'ETIMEDOUT',
    syscall: 'connect',
    address: '104.25.167.105',
    port: 443,
    config:
     { adapter: [Function: httpAdapter],
       transformRequest: { '0': [Function: transformRequest] },
       transformResponse: { '0': [Function: transformResponse] },
       timeout: 0,
       xsrfCookieName: 'XSRF-TOKEN',
       xsrfHeaderName: 'X-XSRF-TOKEN',
       maxContentLength: -1,
       validateStatus: [Function: validateStatus],
       headers:
        { Accept: 'application/json, text/plain, */*',
          'User-Agent': 'axios/0.18.0' },
       method: 'get',
       url: 'https://api.neoscan.io/api/main_net/v1/get_all_nodes',
       data: undefined },
    request:
     Writable {
       _writableState:
        WritableState {
          objectMode: false,
          highWaterMark: 16384,
          finalCalled: false,
          needDrain: false,
          ending: false,
          ended: false,
          finished: false,
          destroyed: false,
          decodeStrings: true,
          defaultEncoding: 'utf8',
          length: 0,
          writing: false,
          corked: 0,
          sync: true,
          bufferProcessing: false,
          onwrite: [Function: bound onwrite],
          writecb: null,
          writelen: 0,
          bufferedRequest: null,
          lastBufferedRequest: null,
          pendingcb: 0,
          prefinished: false,
          errorEmitted: false,
          emitClose: true,
          bufferedRequestCount: 0,
          corkedRequestsFree: [Object] },
       writable: true,
       _events:
        { response: [Function: handleResponse],
          error: [Function: handleRequestError] },
       _eventsCount: 2,
       _maxListeners: undefined,
       _options:
        { protocol: 'https:',
          maxRedirects: 21,
          maxBodyLength: 10485760,
          path: '/api/main_net/v1/get_all_nodes',
          method: 'get',
          headers: [Object],
          agent: undefined,
          auth: undefined,
          hostname: 'api.neoscan.io',
          port: null,
          nativeProtocols: [Object],
          pathname: '/api/main_net/v1/get_all_nodes' },
       _redirectCount: 0,
       _redirects: [],
       _requestBodyLength: 0,
       _requestBodyBuffers: [],
       _onNativeResponse: [Function],
       _currentRequest:
        ClientRequest {
          _events: [Object],
          _eventsCount: 6,
          _maxListeners: undefined,
          output: [],
          outputEncodings: [],
          outputCallbacks: [],
          outputSize: 0,
          writable: true,
          _last: true,
          chunkedEncoding: false,
          shouldKeepAlive: false,
          useChunkedEncodingByDefault: false,
          sendDate: false,
          _removedConnection: false,
          _removedContLen: false,
          _removedTE: false,
          _contentLength: 0,
          _hasBody: true,
          _trailer: '',
          finished: true,
          _headerSent: true,
          socket: [TLSSocket],
          connection: [TLSSocket],
          _header:
           'GET /api/main_net/v1/get_all_nodes HTTP/1.1\r\nAccept: application/json, text/plain, */*\r\nUser-Agent: axios/0.18.0\r\nHost: api.neoscan.io\r\nConnection: close\r\n\r\n',
          _onPendingData: [Function: noopPendingOutput],
          agent: [Agent],
          socketPath: undefined,
          timeout: undefined,
          method: 'GET',
          path: '/api/main_net/v1/get_all_nodes',
          _ended: false,
          res: null,
          aborted: undefined,
          timeoutCb: null,
          upgradeOrConnect: false,
          parser: null,
          maxHeadersCount: null,
          _redirectable: [Circular],
          [Symbol(isCorked)]: false,
          [Symbol(outHeadersKey)]: [Object] },
       _currentUrl: 'https://api.neoscan.io/api/main_net/v1/get_all_nodes' },
    response: undefined }
  </code></pre>
  
  <p>Here's the additional error code that I'm getting after responding</p>
  
  <pre><code>(node:35220) UnhandledPromiseRejectionWarning: TypeError: Converting circular structure to JSON
      at JSON.stringify (&lt;anonymous&gt;)
      at stringify (.\new-viewer\node_modules\express\lib\response.js:1119:12)
      at ServerResponse.json (.\new-viewer\node_modules\express\lib\response.js:260:14)
      at ServerResponse.send (.\new-viewer\node_modules\express\lib\response.js:158:21)
      at axios.get.then.catch.err (.\new-viewer\server\api\index.js:45:27)
      at process._tickCallback (internal/process/next_tick.js:68:7)
  (node:40496) UnhandledPromiseRejectionWarning: TypeError: res.error is not a function
      at axios.get.then.catch.err (.r\server\api\index.js:36:17)
      at process._tickCallback (internal/process/next_tick.js:68:7)
  (node:40496) 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:40496) [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>