Repository: kubernetes
Issue: List watch request for Events with stale resourceVersion responds immediately without error
Labels: kind/bug,sig/api-machinery,triage/accepted

<!-- Please use this template while reporting a bug and provide as much info as possible. Not doing so may result in your bug not being addressed in a timely manner. Thanks!

If the matter is security related, please disclose it privately via https://kubernetes.io/security/
-->


#### What happened:
Per the [documentation on using watches](https://kubernetes.io/docs/reference/using-api/api-concepts/#efficient-detection-of-changes) I attempted to resume a timed out watch for `events.k8s.io/v1` `Event` objects by issuing a new List request with the `watch` parameter set and the `resourceVersion` set to the last `Event` object I'd received on the watch.

However, by the time I issued the new request that `resourceVersion` was stale.  The response I received from the K8S API was an immediate HTTP 200 with an empty request body.  (This confused the K8S library I was using which was expecting a 410 Gone error in that case, and resulted in a busy-loop of retrying over and over which put strain on the K8S API server.)

#### What you expected to happen:
I expected the watch request to receive a response with some form of `410 Gone` error (either in the HTTP status code or as some form of JSON error object in the response body).  This is the documented behavior, and I was able to verify that this is what happens for other resource types like Secrets.

#### How to reproduce it (as minimally and precisely as possible):

##### How to reproduce the failure for Events
Ensure there are recorded events in the Kubernetes cluster, e.g., `kubectl -n YOUR-NS-HERE get events.events.k8s.io` yields a non-empty output.

Then request a watch for events with a known stale `resourceVersion`.
```
$ curl -i -kE k3s.client.pem 'https://localhost:6443/apis/events.k8s.io/v1/namespaces/YOUR-NS-HERE/events?&watch=1&resourceVersion=1'      
HTTP/1.1 200 OK
Cache-Control: no-cache, private
Content-Type: application/json
Date: Thu, 05 Aug 2021 15:58:57 GMT
Transfer-Encoding: chunked

```

Note that even though the `Transfer-Encoding: chunked` header is given, the K8S API server closes the connection immediately after serving an empty response.

##### How to reproduce correct behavior for an alternate Resource type (e.g., a Secret)
```
$ curl -i -kE k3s.client.pem 'https://localhost:6443/api/v1/namespaces/YOUR-NS-HERE/secrets?&watch=true&resourceVersion=1'                                                                                                          HTTP/1.1 200 OK
Cache-Control: no-cache, private
Content-Type: application/json
Date: Thu, 05 Aug 2021 15:58:40 GMT
Transfer-Encoding: chunked

{"type":"ERROR","object":{"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"too old resource version: 1 (1126176)","reason":"Expired","code":410}}
```

#### Anything else we need to know?:

#### Environment:
- Kubernetes version (use `kubectl version`):
```
Client Version: version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.3", GitCommit:"ca643a4d1f7bfe34773c74f79527be4afd95bf39", GitTreeState:"archive", BuildDate:"2021-07-16T17:16:46Z", GoVersion:"go1.16.5", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.2+k3s1", GitCommit:"5a67e8dc473f8945e8e181f6f0b0dbbc387f6fca", GitTreeState:"clean", BuildDate:"2021-06-21T20:52:44Z", GoVersion:"go1.16.4", Compiler:"gc", Platform:"linux/amd64"}
```
I have also tested and verified this bug exists in Kubernetes 1.19.12.
- Cloud provider or hardware configuration: MacBook Pro running Kubernetes locally on Linux
- OS (e.g: `cat /etc/os-release`):
```
NAME="Arch Linux"
PRETTY_NAME="Arch Linux"
ID=arch
BUILD_ID=rolling
ANSI_COLOR="38;2;23;147;209"
HOME_URL="https://archlinux.org/"
DOCUMENTATION_URL="https://wiki.archlinux.org/"
SUPPORT_URL="https://bbs.archlinux.org/"
BUG_REPORT_URL="https://bugs.archlinux.org/"
LOGO=archlinux
```
- Kernel (e.g. `uname -a`): `Linux redacted 5.10.55-1-lts #1 SMP Sat, 31 Jul 2021 08:12:13 +0000 x86_64 GNU/Linux`
- Install tools: [Arch Linux AUR package for K3S 1.21](https://aur.archlinux.org/packages/k3s-1.21-bin/)
- Network plugin and version (if this is a network-related bug):
- Others: