This code involves `getRepositoryData` which may complete its listener on a transport worker:

https://github.com/elastic/elasticsearch/blob/898d84998b081d47ec6a9c2305f9bf4486d69be3/server/src/main/java/org/elasticsearch/index/shard/StoreRecovery.java#L528-L547

However the listener in question calls `Repository#restoreShard` which involves blocking calls and should not run on a transport worker.
server/src/main/java/org/elasticsearch/index/shard/StoreRecovery.java
indexShard.store(),
                    restoreSource.snapshot().getSnapshotId(),
                    idx,
                    snapshotShardId,
                    indexShard.recoveryState(),
                    restoreListener
                ),
                restoreListener::onFailure
            );
        } catch (Exception e) {
            restoreListener.onFailure(e);
        }
    }
    public static void bootstrap(final IndexShard indexShard, final Store store) throws IOException {
        if (indexShard.indexSettings.getIndexMetadata().isSearchableSnapshot() == false) {
            
            store.bootstrapNewHistory();
        }
        final SegmentInfos segmentInfos = store.readLastCommittedSegmentsInfo();
        final long localCheckpoint = Long.parseLong(segmentInfos.userData.get(SequenceNumbers.LOCAL_CHECKPOINT_KEY));
        final String translogUUID = Translog.createEmptyTranslog(
            indexShard.shardPath().resolveTranslog(),
            localCheckpoint,
            indexShard.shardId(),
            indexShard.getPendingPrimaryTerm()
        );
        store.associateIndexWithNewTranslog(translogUUID);
    }
}