One is the mention of SettableFuture in the description, though it is not anywhere in the code.
The other is the final section discussing the "response stream observer" when it was actually talking about the request stream observer.
It's not intended to be an exhaustive list, and I suspect that there are plenty of other errors given the glaring aspect of that first one.
Normally I wouldn't mind fixing things myself, but the truth is, I still don't understand how to deal with asynchronicity correctly in Android, especially with bidirectional streaming procedures, and mostly because I am totally new to the entire and overwhelmingly confused/confusing API of Android related to concurrency.
In fact, I've been trying to wrap my stub code for a bidirectional streaming procedure in a layer that provides ListenableFutures of some sort, and -- egads -- it has been a nightmare trying to figure that out. But that's my own problem due to unfamiliarity with the platform. I've been very impressed with gRPC otherwise, and had no difficulty at all figuring out how to deal with asynchronicity in my C# client, where there seems to be no need whatsoever to add a layer on top of the stub code. Then came Android. Blech. :-)
By contrast, the tutorial's gaffs are more of a community problem, so if someone wants to take the time to clear it up, that would be nice. Sorry if this is not the right place to offer such well-intended feedback -- I just couldn't find any more appropriate route for it. This is more of a notification message than a question of any kind, so I'm not necessarily looking for anyone to reply. Thanks.
Regards,
--
Keith W. Blackwell