public function selectRequest(ObjectListQuery $objectListQuery = null, array $options = []): PromiseInterface
    {
        if (!$objectListQuery) {
            $objectListQuery = new ObjectListQuery();
        }

        $annotation = $this->dataService->getAnnotation();

        if (!isset($options['query'])) {
            $options['query'] = [];
        }
        $options['query'] = $options['query'] +
            $objectListQuery->toQueryParts() + [
                'schema' => $annotation->schemaVersion,
                'form' => 'cjson',
                'count' => true,
            ];

        if ($this->authenticatedClient->hasAccount()) {
            $options['query']['account'] = (string) $this->authenticatedClient->getAccount()->getMpxId();
        }

        $uri = $this->getBaseUri($annotation, true);

        $request = $this->authenticatedClient->requestAsync('GET', $uri, $options)->then(
            function (ResponseInterface $response) use ($objectListQuery) {
                return $this->deserializeObjectList($response, $objectListQuery);
            }
        );

        return $request;
    }