diff --git a/src/hypercorn/protocol/h11.py b/src/hypercorn/protocol/h11.py
index <HASH>..<HASH> 100755
--- a/src/hypercorn/protocol/h11.py
+++ b/src/hypercorn/protocol/h11.py
@@ -161,9 +161,9 @@ class H11Protocol:
                 break
             else:
                 if isinstance(event, h11.Request):
+                    await self.send(Updated(idle=False))
                     await self._check_protocol(event)
                     await self._create_stream(event)
-                    await self.send(Updated(idle=False))
                 elif event is h11.PAUSED:
                     await self.can_read.clear()
                     await self.can_read.wait()
diff --git a/tests/protocol/test_h11.py b/tests/protocol/test_h11.py
index <HASH>..<HASH> 100755
--- a/tests/protocol/test_h11.py
+++ b/tests/protocol/test_h11.py
@@ -296,6 +296,7 @@ async def test_protocol_handle_h2c_upgrade(protocol: H11Protocol) -> None:
             )
         )
     assert protocol.send.call_args_list == [  # type: ignore
+        call(Updated(idle=False)),
         call(
             RawData(
                 b"HTTP/1.1 101 \r\n"
Bugfix send the idle update first on HTTP/1 request receipt

This ensures that the connection is marked as not idle before a
protocol upgrade takes place. This therefore ensures that on upgrading
a slow response is not timed out.