### Elasticsearch Version

8.3.0

### Installed Plugins

_No response_

### Java Version

_bundled_

### OS Version

arm64

### Problem Description

When using the `_terms_enum` API, if remote clusters return failures, but the local cluster doesn't, a null exception is thrown:

```
{
  "error": {
    "root_cause": [
      {
        "type": "null_pointer_exception",
        "reason": "Cannot invoke \"java.util.List.add(Object)\" because \"shardFailures\" is null"
      }
    ],
    "type": "null_pointer_exception",
    "reason": "Cannot invoke \"java.util.List.add(Object)\" because \"shardFailures\" is null"
  },
  "status": 500
}
```

### Steps to Reproduce

Call the _terms_enum API with a remote cluster that will return failures, e.g. because of this bug: https://github.com/elastic/elasticsearch/issues/86187

### Logs (if relevant)

_No response_
x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/termsenum/action/TransportTermsEnumAction.java
return new NodeTermsEnumResponse(request.nodeId(), termsList, error, true);
            }
            MultiShardTermsEnum te = new MultiShardTermsEnum(shardTermsEnums.toArray(new TermsEnum[0]));
            int shard_size = request.size();
            
            if (System.currentTimeMillis() > scheduledEnd) {
                return new NodeTermsEnumResponse(request.nodeId(), termsList, error, false);
            }
            int numTermsBetweenClockChecks = 100;
            int termCount = 0;
            
            while (te.next() != null) {
                termCount++;
                if (termCount > numTermsBetweenClockChecks) {
                    if (System.currentTimeMillis() > scheduledEnd) {
                        boolean complete = te.next() == null;
                        return new NodeTermsEnumResponse(request.nodeId(), termsList, error, complete);
                    }
                    termCount = 0;
                }
                BytesRef bytes = te.term();
                termsList.add(bytes.utf8ToString());
                if (termsList.size() >= shard_size) {
                    break;
                }
            }
        } catch (Exception e) {
            error = ExceptionsHelper.stackTrace(e);
        } finally {