code: protected function prepare()
      {
          if ($this->statusCode === 204) {
              $this->content = '';
              $this->stream = null;
              return;
          }
  
          if ($this->stream !== null) {
              return;
          }
  
          if (isset($this->formatters[$this->format])) {
              $formatter = $this->formatters[$this->format];
              if (!is_object($formatter)) {
                  $this->formatters[$this->format] = $formatter = Yii::createObject($formatter);
              }
              if ($formatter instanceof ResponseFormatterInterface) {
                  $formatter->format($this);
              } else {
                  throw new InvalidConfigException("The '{$this->format}' response formatter is invalid. It must implement the ResponseFormatterInterface.");
              }
          } elseif ($this->format === self::FORMAT_RAW) {
              if ($this->data !== null) {
                  $this->content = $this->data;
              }
          } else {
              throw new InvalidConfigException("Unsupported response format: {$this->format}");
          }
  
          if (is_array($this->content)) {
              throw new InvalidArgumentException('Response content must not be an array.');
          } elseif (is_object($this->content)) {
              if (method_exists($this->content, '__toString')) {
                  $this->content = $this->content->__toString();
              } else {
                  throw new InvalidArgumentException('Response content must be a string or an object implementing __toString().');
              }
          }
      }
docs: Prepares for sending the response.
  The default implementation will convert [[data]] into [[content]] and set headers accordingly.
  @throws InvalidConfigException if the formatter for the specified format is invalid or [[format]] is not supported