**Describe the situation**

The author implemented it but enabled only for DiskS3.
CC @excitoon 
{
    auto settings = current_settings.get();
    auto metadata = readMetadata(path);
    LOG_TEST(log, "Read from file by path: {}. Existing S3 objects: {}",
        backQuote(metadata_disk->getPath() + path), metadata.remote_fs_objects.size());
    ReadSettings disk_read_settings{read_settings};
    if (cache)
        disk_read_settings.remote_fs_cache = cache;
    auto s3_impl = std::make_unique<ReadBufferFromS3Gather>(
        path, settings->client, bucket, metadata,
        settings->s3_max_single_read_retries, disk_read_settings);
    if (read_settings.remote_fs_method == RemoteFSReadMethod::threadpool)
    {
        auto reader = getThreadPoolReader();
        return std::make_unique<AsynchronousReadIndirectBufferFromRemoteFS>(reader, disk_read_settings, std::move(s3_impl));
    }
    else
    {
        auto buf = std::make_unique<ReadIndirectBufferFromRemoteFS>(std::move(s3_impl));
        return std::make_unique<SeekAvoidingReadBuffer>(std::move(buf), settings->min_bytes_for_seek);
    }
}
std::unique_ptr<WriteBufferFromFileBase> DiskS3::writeFile(const String & path, size_t buf_size, WriteMode mode)