public function request($path, $content = '') {
    $url = $this->getWardenUrl() . $path;

    $options = [];

    if ($this->hasBasicAuthentication()) {
      $options['auth'] = [ $this->getUsername(), $this->getPassword()];
    }

    $method = 'GET';
    if (!empty($content)) {
      $method = 'POST';
      $options['body'] = $content;
    }

    if (!empty($this->hasCertificatePath())) {
      $options['cert'] = $this->getCertificatePath();
    }

    $client = new Client();

    $res = $client->request($method, $url, $options);

    if ($res->getStatusCode() !== 200) {
      throw new WardenBadResponseException('Unable to communicate with Warden (' . $res->getStatusCode() . ') ' . $res->getReasonPhrase());
    }

    return $res;
  }