We should not call nghttp2_session_terminate_session() in server-side code after all of the active HTTP/2 streams are processed. The underlying transport connection is expected to remain opened at least for some time in this case for new HTTP/2 requests to arrive. That is what flamethrower was expecting and it makes perfect sense from the HTTP/2 perspective.