code: @Override
      protected final void onStreamError(ChannelHandlerContext ctx, boolean outbound, Throwable cause,
                                   Http2Exception.StreamException streamException) {
          int streamId = streamException.streamId();
          Http2Stream connectionStream = connection().stream(streamId);
          if (connectionStream == null) {
              onHttp2UnknownStreamError(ctx, cause, streamException);
              // Write a RST_STREAM
              super.onStreamError(ctx, outbound, cause, streamException);
              return;
          }
  
          Http2FrameStream stream = connectionStream.getProperty(streamKey);
          if (stream == null) {
              LOG.warn("Stream exception thrown without stream object attached.", cause);
              // Write a RST_STREAM
              super.onStreamError(ctx, outbound, cause, streamException);
              return;
          }
  
          if (!outbound) {
              // We only forward non outbound errors as outbound errors will already be reflected by failing the promise.
              onHttp2FrameStreamException(ctx, new Http2FrameStreamException(stream, streamException.error(), cause));
          }
      }
docs: Exceptions for unknown streams, that is streams that have no {@link Http2FrameStream} object attached
  are simply logged and replied to by sending a RST_STREAM frame.