Since Go's API is synchronous/blocking, I am pretty sure that sender always block until message is actually sent, which will respect HTTP/2 flow control windows.
If you want an async API, where a sender can queue up messages even before the receiver can accept them, you could push them into a buffered channel and have another goroutine that is de-queueing from the channel and writing to the receiver as allowed by flow control.
Java is different because its API is completely async and non-blocking. So backpressure requires more sophistication in the app code.