Respect client's advertised flow control window size when writing from Handlers.
diff --git a/server.go b/server.go
index a2de381..bba6557 100644
--- a/server.go
+++ b/server.go
@@ -35,6 +35,7 @@
 var (
 	errClientDisconnected = errors.New("client disconnected")
 	errClosedBody         = errors.New("body closed by handler")
+	errStreamBroken       = errors.New("http2: stream broken")
 )
 
 var responseWriterStatePool = sync.Pool{
@@ -1516,6 +1517,11 @@
 		if len(chunk) > handlerChunkWriteSize {
 			chunk = chunk[:handlerChunkWriteSize]
 		}
+		allowedSize := rws.stream.flow.wait(int32(len(chunk)))
+		if allowedSize == 0 {
+			return n, errStreamBroken
+		}
+		chunk = chunk[:allowedSize]
 		p = p[len(chunk):]
 		isFinal := rws.handlerDone && len(p) == 0
 		err = rws.writeData(chunk, isFinal)