code: async function _request (client, url, body, method, times = 1) {
    if (client.isDebug) {
      debug('Push URL :' + url)
      if (body) {
        debug('Body :' + body)
      }
      // debug("Auth :" + JSON.stringify(auth))
      debug('Method :' + method)
      debug('Times/MaxTryTimes : ' + times + '/' + client.maxTryTimes)
    }
  
    var options = {
      method: method.toUpperCase(),
      json: true,
      uri: url,
      body: body,
      auth: {
        user: client.appkey,
        pass: client.masterSecret
      },
      timeout: client.readTimeOut,
      proxy: client.proxy
    };
  
    try {
      return await Request(options);
    } catch (err) {
      if (err.error.code === 'ETIMEDOUT' && err.error.syscall !== 'connect') {
        // response timeout
        throw new JError.APIConnectionError(
          'Response timeout. Your request to the server may have already received, please check whether or not to push',
          true)
      } else if (err.error.code === 'ENOTFOUND') {
        // unknown host
        throw new JError.APIConnectionError('Unknown host : ' + url)
      } else if (times < client.maxTryTimes) {
        return _request(client, url, body, method, times + 1)
      } else {
        if (client.isDebug) {
          debug('Fail, HttpStatusCode: ' + err.statusCode + ' result: ' + JSON.stringify(err.error))
        }
        throw new JError.APIRequestError(err.statusCode, JSON.stringify(err.error))
      }
    }
  }
docs: Proxy start Proxy end