|  | @@ -1532,19 +1532,13 @@ static void perform_stream_op_locked(void* stream_op,
 | 
	
		
			
				|  |  |      on_complete->next_data.scratch |= CLOSURE_BARRIER_MAY_COVER_WRITE;
 | 
	
		
			
				|  |  |      s->fetching_send_message_finished = add_closure_barrier(op->on_complete);
 | 
	
		
			
				|  |  |      if (s->write_closed) {
 | 
	
		
			
				|  |  | -      // Return an error unless the client has already received trailing
 | 
	
		
			
				|  |  | -      // metadata from the server, since an application using a
 | 
	
		
			
				|  |  | -      // streaming call might send another message before getting a
 | 
	
		
			
				|  |  | -      // recv_message failure, breaking out of its loop, and then
 | 
	
		
			
				|  |  | -      // starting recv_trailing_metadata.
 | 
	
		
			
				|  |  | +      op->payload->send_message.stream_write_closed = true;
 | 
	
		
			
				|  |  | +      // We should NOT return an error here, so as to avoid a cancel OP being
 | 
	
		
			
				|  |  | +      // started. The surface layer will notice that the stream has been closed
 | 
	
		
			
				|  |  | +      // for writes and fail the send message op.
 | 
	
		
			
				|  |  |        op->payload->send_message.send_message.reset();
 | 
	
		
			
				|  |  |        grpc_chttp2_complete_closure_step(
 | 
	
		
			
				|  |  | -          t, s, &s->fetching_send_message_finished,
 | 
	
		
			
				|  |  | -          t->is_client && s->received_trailing_metadata
 | 
	
		
			
				|  |  | -              ? GRPC_ERROR_NONE
 | 
	
		
			
				|  |  | -              : GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
 | 
	
		
			
				|  |  | -                    "Attempt to send message after stream was closed",
 | 
	
		
			
				|  |  | -                    &s->write_closed_error, 1),
 | 
	
		
			
				|  |  | +          t, s, &s->fetching_send_message_finished, GRPC_ERROR_NONE,
 | 
	
		
			
				|  |  |            "fetching_send_message_finished");
 | 
	
		
			
				|  |  |      } else {
 | 
	
		
			
				|  |  |        GPR_ASSERT(s->fetching_send_message == nullptr);
 |