### 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
IOUtils.close(openedResources);
        }
        return new NodeTermsEnumResponse(request.nodeId(), termsList, error, true);
    }
    
    
    private boolean canAccess(
        ShardId shardId,
        NodeTermsEnumRequest request,
        XPackLicenseState frozenLicenseState,
        ThreadContext threadContext
    ) throws IOException {
        if (XPackSettings.SECURITY_ENABLED.get(settings)) {
            IndicesAccessControl indicesAccessControl = threadContext.getTransient(AuthorizationServiceField.INDICES_PERMISSIONS_KEY);
            IndicesAccessControl.IndexAccessControl indexAccessControl = indicesAccessControl.getIndexPermissions(shardId.getIndexName());
            if (indexAccessControl != null) {
                final boolean dls = indexAccessControl.getDocumentPermissions().hasDocumentLevelPermissions();
                if (dls && DOCUMENT_LEVEL_SECURITY_FEATURE.checkWithoutTracking(frozenLicenseState)) {
                    
                    SecurityContext securityContext = new SecurityContext(clusterService.getSettings(), threadContext);
                    final IndexService indexService = indicesService.indexServiceSafe(shardId.getIndex());
                    final SearchExecutionContext queryShardContext = indexService.newSearchExecutionContext(
                        shardId.id(),
                        0,
                        null,
                        request::nodeStartedTimeMillis,
                        null,
                        Collections.emptyMap()
                    );