Hi Tim,
thanks for the reproducer, it seems due to the HTTP request being chunked.
When using HTTP over clear text (h2c) the default choice is to use an HTTP upgrade mechanism to establish an HTTP/2 channel. However the first HTTP request is always used as the first request, i.e if you do an HTTP post and send a body then the first request will be done using HTTP/1 and a real chunked encoded request (while the server will respond with an HTTP/2 response)
It seems that setting the request as chunked messes up with the HTTP/2 upgrade, this is a bug and will be fixed.
As work-around if you do control the HTTP2 server and it supports it I would recommend using H2C with prior knowledge which is still clear text but without HTTP upgrades (both client and server directly uses HTTP/2 encoding in clear text). Vertx HTTP server supports it out of the box and Vertx HTTP client supports it by using the calling setHttp2ClearTestUpgrade(false) on the options to enable it.
Julien