### Elasticsearch Version

Doesn't matter

### Installed Plugins

_No response_

### Java Version

all

### OS Version

doesn't matter

### Problem Description

When you send a `scroll` request to the low level rest client it uses it's standard retry mechanism which catches all errors and just retries against another ES instance. The trouble with that is that you *can't* retry a scroll - it generally consumes state on the server and moves to the next page.

### Steps to Reproduce

Scroll with low level rest client.

### Logs (if relevant)

_No response_
client/rest/src/main/java/org/elasticsearch/client/RestClient.java
*
     * This method works by performing an asynchronous call and waiting
     * for the result. If the asynchronous call throws an exception we wrap
     * it and rethrow it so that the stack trace attached to the exception
     * contains the call site. While we attempt to preserve the original
     * exception this isn't always possible and likely haven't covered all of
     * the cases. You can get the original exception from
     * {@link Exception#getCause()}.
     *
     * @param request the request to perform
     * @return the response returned by Elasticsearch
     * @throws IOException in case of a problem or the connection was aborted
     * @throws ClientProtocolException in case of an http protocol error
     * @throws ResponseException in case Elasticsearch responded with a status code that indicated an error
     */
    public Response performRequest(Request request) throws IOException {
        InternalRequest internalRequest = new InternalRequest(request);
        return performRequest(nextNodes(), internalRequest, null);
    }
    private Response performRequest(final NodeTuple<Iterator<Node>> tuple, final InternalRequest request, Exception previousException)
        throws IOException {
        RequestContext context = request.createContextForNextAttempt(tuple.nodes.next(), tuple.authCache);
        HttpResponse httpResponse;
        try {
            httpResponse = client.execute(context.requestProducer, context.asyncResponseConsumer, context.context, null).get();
        } catch (Exception e) {
            RequestLogger.logFailedRequest(logger, request.httpRequest, context.node, e);
            onFailure(context.node);
            Exception cause = extractAndWrapCause(e);
            addSuppressedException(previousException, cause);