Thinking about this again, having TryCancel() on the call context is truly surprising to me. It's spooky action at a distance. The call context is used once when the stream is established, and then typically forgotten, and the data is received by calling a method on the stream. So, why isn't TryCancel() on the stream?
What I find particularly jarring is that WritesDone() is on the stream, but TryCancel() is not. It seems that both methods should be in the same place (preferably the stream, rather than the context). -- *CONFIDENTIALITY NOTICE:* The information contained in this message may be privileged and/or confidential. It is the property of CrowdStrike. If you are not the intended recipient, or responsible for delivering this message to the intended recipient, any review, forwarding, dissemination, distribution or copying of this communication or any attachment(s) is strictly prohibited. If you have received this message in error, please notify the sender immediately, and delete it and all attachments from your computer and network. -- You received this message because you are subscribed to the Google Groups "grpc.io" group. To unsubscribe from this group and stop receiving emails from it, send an email to grpc-io+unsubscr...@googlegroups.com. To post to this group, send email to grpc-io@googlegroups.com. Visit this group at https://groups.google.com/group/grpc-io. To view this discussion on the web visit https://groups.google.com/d/msgid/grpc-io/99388469-2a10-4824-aa04-341b2c3dbaca%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.