Louis thank so very much for a detailed and prompt response.
As for the use case;
I'm considering grpc for use in a decentralised protocol that allows users to store json and binary objects in their home servers and share them with other users on remote servers.
Server must have their communication ports open to the world so there is no NAT issue there. I'm trying to simplify the connection between servers as depending on the users' relationships with others might end up opening quite a lot of connections. (Not an issue if a server only serves a single user but in case of multi-tenant servers this might get ugly).
My previous test implementations were using web sockets as I would like to have something that has wide language support but the lack of proper request/response without a ws sub protocol or annoying wrapper objects led me to scrap it.
I was thinking of using plain http2 but while the client can send proper request/responses, the server can only push attachments via the request promise or whatever it was called.
Grpc and Thrift are my latest attempts while in not to create yet another custom communication protocol, and I really enjoyed grpc the little I played with it.
@Louis, as you said creating a pair of connections is an option, it won't be the end of the world but I was just trying to see if there is any better alternative as servers will be identical and a single pipe would go a long way in a protocol specification.
If there is a draft or discussion on the inverter concept please let me know as it sounds very interesting.
Any ideas, reading material or suggestions are more than welcome.
George