private function tryRequest(
        callable $callable,
        ?Retry $retry
    ): array {
        $tries = $retry instanceof Retry
            ? $retry->getRetries()
            : 0;

        while (true) {
            try {
                return $callable();
            } catch (\Exception $e) {
                if ($tries-- <= 0) {
                    throw $e;
                }

                usleep($retry->getMicrosecondsBetweenRetries());
            }
        }
    }