Merge pull request #6908 from jtattermusch/csharp_send_completion_dedup

C#: dedup code for send finished handler
diff --git a/src/csharp/Grpc.Core/Internal/AsyncCall.cs b/src/csharp/Grpc.Core/Internal/AsyncCall.cs
index 895be69..f549c52 100644
--- a/src/csharp/Grpc.Core/Internal/AsyncCall.cs
+++ b/src/csharp/Grpc.Core/Internal/AsyncCall.cs
@@ -267,7 +267,7 @@
                     halfcloseRequested = true;
                     return Task.FromResult<object>(null);
                 }
-                call.StartSendCloseFromClient(HandleSendCloseFromClientFinished);
+                call.StartSendCloseFromClient(HandleSendFinished);
 
                 halfcloseRequested = true;
                 streamingWriteTcs = new TaskCompletionSource<object>();
diff --git a/src/csharp/Grpc.Core/Internal/AsyncCallBase.cs b/src/csharp/Grpc.Core/Internal/AsyncCallBase.cs
index cb8366c..eb9c3ea 100644
--- a/src/csharp/Grpc.Core/Internal/AsyncCallBase.cs
+++ b/src/csharp/Grpc.Core/Internal/AsyncCallBase.cs
@@ -248,7 +248,7 @@
         }
 
         /// <summary>
-        /// Handles send completion.
+        /// Handles send completion (including SendCloseFromClient).
         /// </summary>
         protected void HandleSendFinished(bool success)
         {
@@ -272,31 +272,6 @@
         }
 
         /// <summary>
-        /// Handles halfclose (send close from client) completion.
-        /// </summary>
-        protected void HandleSendCloseFromClientFinished(bool success)
-        {
-            TaskCompletionSource<object> origTcs = null;
-            lock (myLock)
-            {
-                origTcs = streamingWriteTcs;
-                streamingWriteTcs = null;
-
-                ReleaseResourcesIfPossible();
-            }
-
-            if (!success)
-            {
-                // TODO(jtattermusch): this method is same as HandleSendFinished (only the error message differs).
-                origTcs.SetException(new InvalidOperationException("Sending close from client has failed."));
-            }
-            else
-            {
-                origTcs.SetResult(null);
-            }
-        }
-
-        /// <summary>
         /// Handles send status from server completion.
         /// </summary>
         protected void HandleSendStatusFromServerFinished(bool success)