diff --git a/lib/netstd/Thrift/Server/TThreadPoolAsyncServer.cs b/lib/netstd/Thrift/Server/TThreadPoolAsyncServer.cs
index 20e659d..877d595 100644
--- a/lib/netstd/Thrift/Server/TThreadPoolAsyncServer.cs
+++ b/lib/netstd/Thrift/Server/TThreadPoolAsyncServer.cs
@@ -172,19 +172,21 @@
                 if (ServerEventHandler != null)
                     await ServerEventHandler.PreServeAsync(cancellationToken);
 
-                while (!stop)
+                while (!(stop || ServerCancellationToken.IsCancellationRequested))
                 {
-                    int failureCount = 0;
                     try
                     {
                         TTransport client = await ServerTransport.AcceptAsync(cancellationToken);
                         ThreadPool.QueueUserWorkItem(this.Execute, client);
                     }
+                    catch (TaskCanceledException)
+                    {
+                        stop = true;
+                    }
                     catch (TTransportException ttx)
                     {
                         if (!stop || ttx.Type != TTransportException.ExceptionType.Interrupted)
                         {
-                            ++failureCount;
                             LogError(ttx.ToString());
                         }
 
diff --git a/lib/netstd/Thrift/Transport/Server/TNamedPipeServerTransport.cs b/lib/netstd/Thrift/Transport/Server/TNamedPipeServerTransport.cs
index 307b7f8..35a037d 100644
--- a/lib/netstd/Thrift/Transport/Server/TNamedPipeServerTransport.cs
+++ b/lib/netstd/Thrift/Transport/Server/TNamedPipeServerTransport.cs
@@ -264,6 +264,11 @@
                 Close();
                 throw;
             }
+            catch (TaskCanceledException)
+            {
+                Close();
+                throw;  // let it bubble up
+            }
             catch (Exception e)
             {
                 Close();
diff --git a/lib/netstd/Thrift/Transport/Server/TServerTransport.cs b/lib/netstd/Thrift/Transport/Server/TServerTransport.cs
index eee50fb..5366114 100644
--- a/lib/netstd/Thrift/Transport/Server/TServerTransport.cs
+++ b/lib/netstd/Thrift/Transport/Server/TServerTransport.cs
@@ -36,19 +36,9 @@
         public abstract void Close();
         public abstract bool IsClientPending();
 
-        protected virtual async ValueTask<TTransport> AcceptImplementationAsync()
-        {
-            return await AcceptImplementationAsync(CancellationToken.None);
-        }
+        protected abstract ValueTask<TTransport> AcceptImplementationAsync(CancellationToken cancellationToken = default);
 
-        protected abstract ValueTask<TTransport> AcceptImplementationAsync(CancellationToken cancellationToken);
-
-        public async ValueTask<TTransport> AcceptAsync()
-        {
-            return await AcceptAsync(CancellationToken.None);
-        }
-
-        public async ValueTask<TTransport> AcceptAsync(CancellationToken cancellationToken)
+        public async ValueTask<TTransport> AcceptAsync(CancellationToken cancellationToken = default)
         {
             var transport = await AcceptImplementationAsync(cancellationToken);
 
