Thank you for the response. we are aware of the semantics, and they do as advertised - the Channel goes into IDLE on the GOAWAY. However, the CONNECTION itself lingers indefinitely. So every time we get a GOAWAY from the server, we leak a connection - until that connection is closed by the server itself. I was expecting the connection to close after receiving the GOAWAY.
We call getState with true as a means of ensuring the client does its best to keep the connection to the server. The README.md in the POC project explain why. In short - the server pushes messages to the client (via GRPC stream), the server cannot initiate the connection to the client, and the client does not know when the server will send messages. So, the client does it's best to keep the connection to the server active at all times.