docs: function callApi(args, req, res, next) {
  
      debug('callApi called, namespace = ' + args.namespace);
  
      var callArgs = _.assign(_.cloneDeep(config.apiDefaults), args);
      callArgs.paramMethod = callArgs.verb !== 'get' ? 'send' : 'query';
     
      config.apiCallBefore(callArgs, req, res);
  
      if (callArgs.host) callArgs.path = callArgs.host + callArgs.path;
  
      // MAGIC ALERT: if path ends with '/', assume it gets an id from the express request :id matcher
      callArgs.path = callArgs.path.match(/\/$/) ? callArgs.path + req.params.id : callArgs.path;
  
      var call = sa
                   [callArgs.verb](callArgs.path)
                   [callArgs.paramMethod](callArgs.params)
                   .type(callArgs.bodyType) 
                   .timeout(callArgs.timeout);
  
      callArgs.customHeaders.forEach(function(header) {
        debug('adding custom header: '+header.name+'='+header.value);
        call.set(header.name, header.value);
      });
  
      call.end(function(err, response) {
        if (!err && response.body) { 
          res.yukon[callArgs.namespace] = response.body;
          res.yukon[callArgs.namespace].statusCode = response.statusCode;
        }
        
        callArgs.apiError = err;
        callArgs.apiResponse = response;
  
        // IMPORTANT: this function must call next() and therefore must always be last in this block
        config.apiCallback(callArgs, req, res, next);
      });
    }