diff --git a/src/Servers/Kestrel/Transport.Sockets/src/Internal/SocketConnection.cs b/src/Servers/Kestrel/Transport.Sockets/src/Internal/SocketConnection.cs
index ccfabeb3101550a10edc3ffb0bfcd2885ca3d4ca..fc1be0b47e134e955c69b755c1554303754ee28f 100644
--- a/src/Servers/Kestrel/Transport.Sockets/src/Internal/SocketConnection.cs
+++ b/src/Servers/Kestrel/Transport.Sockets/src/Internal/SocketConnection.cs
@@ -33,7 +33,7 @@ internal sealed partial class SocketConnection : TransportConnection
 
     internal SocketConnection(Socket socket,
                               MemoryPool<byte> memoryPool,
-                              PipeScheduler transportScheduler,
+                              PipeScheduler socketScheduler,
                               ILogger logger,
                               SocketSenderPool socketSenderPool,
                               PipeOptions inputOptions,
@@ -55,12 +55,7 @@ internal sealed partial class SocketConnection : TransportConnection
 
         ConnectionClosed = _connectionClosedTokenSource.Token;
 
-        // On *nix platforms, Sockets already dispatches to the ThreadPool.
-        // Yes, the IOQueues are still used for the PipeSchedulers. This is intentional.
-        // https://github.com/aspnet/KestrelHttpServer/issues/2573
-        var awaiterScheduler = OperatingSystem.IsWindows() ? transportScheduler : PipeScheduler.Inline;
-
-        _receiver = new SocketReceiver(awaiterScheduler);
+        _receiver = new SocketReceiver(socketScheduler);
 
         var pair = DuplexPipe.CreateConnectionPair(inputOptions, outputOptions);
 
diff --git a/src/Servers/Kestrel/Transport.Sockets/src/SocketConnectionContextFactory.cs b/src/Servers/Kestrel/Transport.Sockets/src/SocketConnectionContextFactory.cs
index 11e3aca312566dedfb429d5eb80345d651bc4362..4bd06f5cb6477717b1f4f05e29bbd61a08cdfde1 100644
--- a/src/Servers/Kestrel/Transport.Sockets/src/SocketConnectionContextFactory.cs
+++ b/src/Servers/Kestrel/Transport.Sockets/src/SocketConnectionContextFactory.cs
@@ -56,15 +56,13 @@ public sealed class SocketConnectionContextFactory : IDisposable
             {
                 var memoryPool = _options.MemoryPoolFactory();
                 var transportScheduler = options.UnsafePreferInlineScheduling ? PipeScheduler.Inline : new IOQueue();
-                // https://github.com/aspnet/KestrelHttpServer/issues/2573
-                var awaiterScheduler = OperatingSystem.IsWindows() ? transportScheduler : PipeScheduler.Inline;
 
                 _settings[i] = new QueueSettings()
                 {
                     Scheduler = transportScheduler,
                     InputOptions = new PipeOptions(memoryPool, applicationScheduler, transportScheduler, maxReadBufferSize, maxReadBufferSize / 2, useSynchronizationContext: false),
                     OutputOptions = new PipeOptions(memoryPool, transportScheduler, applicationScheduler, maxWriteBufferSize, maxWriteBufferSize / 2, useSynchronizationContext: false),
-                    SocketSenderPool = new SocketSenderPool(awaiterScheduler),
+                    SocketSenderPool = new SocketSenderPool(transportScheduler),
                     MemoryPool = memoryPool,
                 };
             }
@@ -73,8 +71,6 @@ public sealed class SocketConnectionContextFactory : IDisposable
         {
             var memoryPool = _options.MemoryPoolFactory();
             var transportScheduler = options.UnsafePreferInlineScheduling ? PipeScheduler.Inline : PipeScheduler.ThreadPool;
-            // https://github.com/aspnet/KestrelHttpServer/issues/2573
-            var awaiterScheduler = OperatingSystem.IsWindows() ? transportScheduler : PipeScheduler.Inline;
             _settings = new QueueSettings[]
             {
                 new QueueSettings()
@@ -82,7 +78,7 @@ public sealed class SocketConnectionContextFactory : IDisposable
                     Scheduler = transportScheduler,
                     InputOptions = new PipeOptions(memoryPool, applicationScheduler, transportScheduler, maxReadBufferSize, maxReadBufferSize / 2, useSynchronizationContext: false),
                     OutputOptions = new PipeOptions(memoryPool, transportScheduler, applicationScheduler, maxWriteBufferSize, maxWriteBufferSize / 2, useSynchronizationContext: false),
-                    SocketSenderPool = new SocketSenderPool(awaiterScheduler),
+                    SocketSenderPool = new SocketSenderPool(PipeScheduler.Inline),
                     MemoryPool = memoryPool,
                 }
             };
@@ -101,7 +97,7 @@ public sealed class SocketConnectionContextFactory : IDisposable
 
         var connection = new SocketConnection(socket,
             setting.MemoryPool,
-            setting.Scheduler,
+            PipeScheduler.Inline,
             _logger,
             setting.SocketSenderPool,
             setting.InputOptions,