The behavior you're describing is odd. The ResponseHeaderAsync metadata is something the client should be able to receive as soon as the server writes them (without needing to wait for the entire call to finish or receiving any responses from the server). The way to force sending the response headers on the server is by invoking serverCallContext.WriteResponseHeadersAsync() (if you don't force sending the response headers explicitly,
they will be sent along with the first response sent by server).