public function listen(int $since, int $maximum = 500)
    {
        $query = [
            'clientId' => $this->clientId,
            'since' => $since,
            'block' => 'true',
            'form' => 'cjson',
            'schema' => '1.10',
            'filter' => $this->service->getAnnotation()->getObjectType(),
            'size' => $maximum,
        ];

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

        return $this->authenticatedClient->requestAsync('GET', $this->uri, [
            'query' => $query,
        ])->then(function (ResponseInterface $response) {
            return $this->deserializeResponse($response);
        });
    }