> I recall having a lot of trouble with figuring out whether gRPC would handle streaming connections hanging gracefully, for example.
I think I know what you mean, I've always had a hard time differentiating from protocol errors and application errors. Ultimately I gave up trying to be smart and just treated any interruption the same way: resume the stream from where it left off. Transactional behavior is impossible within just gRPC, as far as I can tell.