diff --git a/src/csharp/Grpc.Core/Internal/AsyncCallServer.cs b/src/csharp/Grpc.Core/Internal/AsyncCallServer.cs
index a4f6e4d1b07edbf04d47494d96e0a380dbc146bd..109c207c75c05667bdcc23d8a2d6585d716e3fe7 100644
--- a/src/csharp/Grpc.Core/Internal/AsyncCallServer.cs
+++ b/src/csharp/Grpc.Core/Internal/AsyncCallServer.cs
@@ -201,11 +201,11 @@ namespace Grpc.Core.Internal
         protected override Task CheckSendAllowedOrEarlyResult()
         {
             CheckNotCancelled();
-            GrpcPreconditions.CheckState(!disposed);
 
             GrpcPreconditions.CheckState(!halfcloseRequested, "Response stream has already been completed.");
             GrpcPreconditions.CheckState(!finished, "Already finished.");
             GrpcPreconditions.CheckState(streamingWriteTcs == null, "Only one write can be pending at a time");
+            GrpcPreconditions.CheckState(!disposed);
 
             return null;
         }