code: public function request($method, $path, array $params = [], $limit = null, $offset = null, array $options = [])
      {
          Assertion::nullOrInteger($limit);
          Assertion::nullOrInteger($offset);
          Assertion::isArray($options);
  
          if ($this->isLoginRequired($path)) {
              $this->login();
          }
  
          try {
              $requestUrl = $this->getUrl($path, $options);
              $response = $this->curlRequest($requestUrl, $method, $path, $params, $limit, $offset);
  
              if (null === $response) {
                  throw InvalidResponseException::fromParams($method, $path, $options);
              }
  
              $this->retries = 0;
  
              return $this->prepareResponse($limit, $offset, $options, $response);
          } catch (Exception $exception) {
              return $this->handleRequestException($exception, $method, $path, $params, $limit, $offset);
          } catch (Throwable $exception) {
              return $this->handleRequestException($exception, $method, $path, $params, $limit, $offset);
          }
      }
docs: {@inheritdoc}