### Is there an existing issue for this?

- [X] I have searched the existing issues

### Current Behavior

I'm using LocalStack to emulate AWS S3 and I'm trying to use the SelectObjectContentCommand from the AWS SDK to perform SQL-like queries on a CSV file stored in S3. However, I'm encountering a ProtocolSerializerError stating "Expected iterator for streaming event serialization".

I'm encountering the following error:
```
localstack.aws.protocol.serializer.ProtocolSerializerError: Expected iterator for streaming event serialization.
```

This issue occurs consistently every time I try to run the command. I'm not sure if it's a bug in LocalStack, an issue with the way my local environment is set up, or potentially some other unforeseen issue. Any assistance would be greatly appreciated.

### Expected Behavior

Payload async generator should properly and send events, more specifically `event.Records`

Payload does exist but I never get inside the for await loop
```
      const contentResponse = await this.s3Client.send(contentCommand);
      for await (const event of contentResponse.Payload) {
        debugger;
       }
```

### How are you starting LocalStack?

Custom (please describe below)

### Steps To Reproduce

#### How are you starting localstack (e.g., `bin/localstack` command, arguments, or `docker-compose.yml`)

        const localstackContainer = await new GenericContainer('localstack/localstack', 'latest')
        .withName('tests-localstack-s3')
        .withEnvironment({ SERVICES: 's3', DEBUG: 1 })
        .withExposedPorts(4566)
        .start();

#### Client commands (e.g., AWS SDK code snippet, or sequence of "awslocal" commands)

1. I'm storing a CSV file in S3 with the following data:
```
i,d
0,aaaa
1,aaaa
2,aaaa
3,aaaa
4,aaaa
```

2. I'm running the following command on my s3 client: 
```
new SelectObjectContentCommand({
    Bucket: this.bucket,
    Key: this.key,
    Expression: 'SELECT s.d FROM S3Object s WHERE CAST(s.i AS int) >= 0 AND CAST(s.i AS int) <= 9',
    ExpressionType: 'SQL',
    InputSerialization: {
        CSV: {
            FileHeaderInfo: 'USE',
        },
    },
    OutputSerialization: {
        CSV: {},
    },
});
```


### Environment

```markdown
- OS: windows 10
- LocalStack: latest
```


### Anything else?

this is the entire error:

```
023-07-11T14:15:38.417  INFO --- [   asgi_gw_0] localstack.request.aws     : AWS s3.SelectObjectContent => 200
2023-07-11T14:15:38.420 ERROR --- [-functhread5] hypercorn.error            : Error in ASGI Framework
Traceback (most recent call last):
  File "/opt/code/localstack/.venv/lib/python3.10/site-packages/hypercorn/asyncio/task_group.py", line 22, in _handle
    await app(scope, receive, send, sync_spawn)
  File "/opt/code/localstack/.venv/lib/python3.10/site-packages/hypercorn/app_wrappers.py", line 31, in __call__
    await self.app(scope, receive, send)
  File "/opt/code/localstack/localstack/aws/serving/asgi.py", line 67, in __call__
    return await self.wsgi(scope, receive, send)
  File "/opt/code/localstack/localstack/http/asgi.py", line 319, in __call__
    return await self.handle_http(scope, receive, send)
  File "/opt/code/localstack/localstack/http/asgi.py", line 374, in handle_http
    async for packet in iterable:
  File "/opt/code/localstack/localstack/http/asgi.py", line 107, in to_async_generator
    val = await loop.run_in_executor(executor, _next_sync)
  File "/usr/local/lib/python3.10/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/opt/code/localstack/localstack/http/asgi.py", line 102, in _next_sync
    return next(it)
  File "/opt/code/localstack/.venv/lib/python3.10/site-packages/werkzeug/wsgi.py", line 289, in __next__
    return self._next()
  File "/opt/code/localstack/.venv/lib/python3.10/site-packages/werkzeug/wrappers/response.py", line 32, in _iter_encoded
    for item in iterable:
  File "/opt/code/localstack/localstack/aws/protocol/serializer.py", line 347, in event_stream_serializer
    raise ProtocolSerializerError(
localstack.aws.protocol.serializer.ProtocolSerializerError: Expected iterator for streaming event serialization.
2023-07-11T14:15:38.420 ERROR --- [-functhread5] hypercorn.error            : Error in ASGI Framework
Traceback (most recent call last):
  File "/opt/code/localstack/.venv/lib/python3.10/site-packages/hypercorn/asyncio/task_group.py", line 22, in _handle
    await app(scope, receive, send, sync_spawn)
  File "/opt/code/localstack/.venv/lib/python3.10/site-packages/hypercorn/app_wrappers.py", line 31, in __call__
    await self.app(scope, receive, send)
  File "/opt/code/localstack/localstack/aws/serving/asgi.py", line 67, in __call__
    return await self.wsgi(scope, receive, send)
  File "/opt/code/localstack/localstack/http/asgi.py", line 319, in __call__
    return await self.handle_http(scope, receive, send)
  File "/opt/code/localstack/localstack/http/asgi.py", line 374, in handle_http
    async for packet in iterable:
  File "/opt/code/localstack/localstack/http/asgi.py", line 107, in to_async_generator
    val = await loop.run_in_executor(executor, _next_sync)
  File "/usr/local/lib/python3.10/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/opt/code/localstack/localstack/http/asgi.py", line 102, in _next_sync
    return next(it)
  File "/opt/code/localstack/.venv/lib/python3.10/site-packages/werkzeug/wsgi.py", line 289, in __next__
    return self._next()
  File "/opt/code/localstack/.venv/lib/python3.10/site-packages/werkzeug/wrappers/response.py", line 32, in _iter_encoded
    for item in iterable:
  File "/opt/code/localstack/localstack/aws/protocol/serializer.py", line 347, in event_stream_serializer
    raise ProtocolSerializerError(
localstack.aws.protocol.serializer.ProtocolSerializerError: Expected iterator for streaming event serialization.
```

"""
        Requests going to moto will never be subdomain based, as they passed through the VirtualHost forwarder.
        We know the bucket is in the path, we can directly return it.
        """
        path = urlparse(url).path
        return path.split("/")[1]
    @patch(moto_s3_responses.S3ResponseInstance.subdomain_based_buckets, pass_target=False)
    def subdomain_based_buckets(self, request):
        """
        Requests going to moto will never be subdomain based, as they passed through the VirtualHost forwarder
        """
        return False
    @patch(moto_s3_models.FakeBucket.get_permission)
    def bucket_get_permission(fn, self, *args, **kwargs):
        """
        Apply a patch to disable/enable enforcement of S3 bucket policies
        """
        if not s3_constants.ENABLE_MOTO_BUCKET_POLICY_ENFORCEMENT:
            return PermissionResult.PERMITTED
        return fn(self, *args, **kwargs)
def register_custom_handlers():
    serve_custom_service_request_handlers.append(s3_cors_request_handler)
    serve_custom_service_request_handlers.append(s3_presigned_url_request_handler)
    modify_service_response.append(S3Provider.service, s3_presigned_url_response_handler)