code: function API(method, url, data, callback) {
      if (typeof callback === 'undefined') {
          callback  = data;
          data  = {};
      }
  
      url             = this.prepareUrl(url);
      this.callback   = callback || noop;
      this.data       = data;
  
      this.options          = extend({}, requestOptions);
      this.options.encoding = this.options.encoding || 'utf-8';
  
      // these particular set of options should be immutable
      this.options.method         = method;
      this.options.uri            = url;
      this.options.followRedirect = false;
  
      this[method.toLowerCase()]();
  
      return this;
  }
docs: API Stream
  
  @param {String} method
  @param {String} url
  @param {object/function} data
  - object to be used for post
  - assumed to be a callback function if callback is undefined
  @param {function/undefined} callback