Currently, with HTTP1 shotgun is able to handle async SSE streams by using special logic when it detects the chunked transfer encoding header. For HTTP2, which gun will use when available, shotgun will try to process it as a non-chunked request (since HTTP2 doesn't support chunking) and end up in gen_statem timeout.
It seems like we'll need a new HTTP2 way to handle streams.