public function load(UriInterface $uri, array $options = []): PromiseInterface
    {
        /** @var DataService $annotation */
        $annotation = $this->dataService->getAnnotation();

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

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

        if ('http' == $uri->getScheme()) {
            $uri = $uri->withScheme('https');
        }

        $response = $this->authenticatedClient->requestAsync('GET', $uri, $options)->then(
            function (ResponseInterface $response) {
                return $this->deserialize($response->getBody(), $this->dataService->getClass());
            }
        );

        return $response;
    }