public function verifyChallenge(string $domain, string $token, string $expectedPayload): Promise {
        return call(function () use ($domain, $token, $expectedPayload) {
            $uri = "http://{$domain}/.well-known/acme-challenge/{$token}";

            /** @var Response $response */
            $response = yield $this->client->request($uri);

            /** @var string $body */
            $body = yield $response->getBody();

            if (rtrim($expectedPayload) !== rtrim($body)) {
                throw new AcmeException("Verification failed, please check the response body for '{$uri}'. It contains '{$body}' but '{$expectedPayload}' was expected.");
            }
        });
    }