### 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.
```

"""Change casing of Last-Modified and other headers to be picked by the parser"""
        status_code, resp_headers, key_value = fn(self, *args, **kwargs)
        for low_case_header in [
            "last-modified",
            "content-type",
            "content-length",
            "content-range",
            "content-encoding",
            "content-language",
            "content-disposition",
            "cache-control",
        ]:
            if header_value := resp_headers.pop(low_case_header, None):
                header_name = capitalize_header_name_from_snake_case(low_case_header)
                resp_headers[header_name] = header_value
        
        
        bucket_key_enabled = "x-amz-server-side-encryption-bucket-key-enabled"
        if val := resp_headers.get(bucket_key_enabled, ""):
            resp_headers[bucket_key_enabled] = str(val).lower()
        return status_code, resp_headers, key_value
    @patch(moto_s3_responses.S3Response._bucket_response_head)
    def _fix_bucket_response_head(fn, self, bucket_name, *args, **kwargs):
        code, headers, body = fn(self, bucket_name, *args, **kwargs)
        bucket = self.backend.get_bucket(bucket_name)
        headers["x-amz-bucket-region"] = bucket.region_name
        headers["content-type"] = "application/xml"
        return code, headers, body
    @patch(moto_s3_responses.S3Response._key_response_get)
    def _fix_key_response_get(fn, *args, **kwargs):