setBody(data, options = {}) {
    if (options.raw) {
      this.req.data = data;
      this.body = data;
      return;
    }

    const isJson = this.hasJSONContentType(this.req.headers);
    if (isJson && this.__isObject(data)) {
      this.body = data;
      this.req.data = this.__safeStringifyJSON(data);
      return;
    }

    this.req.data = data;
    this.body = data;
  }
If the content type is JSON and if the data is an object
 - We set the body property as the object itself
 - We set the request data as the stringified JSON as it is what gets sent over the network
Otherwise
 - We set the request data as the data itself
 - We set the body property as the data itself

If the user wants to override this behavior, they can pass the raw option as true