diff --git a/pkg/server/server.go b/pkg/server/server.go
index 3e6a186f40deacafa08dc67c87d43aec2775364c..ac33a8983f8fcd2f44a1fd4195ce29968459136c 100644
--- a/pkg/server/server.go
+++ b/pkg/server/server.go
@@ -324,6 +324,12 @@ func (c *callResponder) send(ctx context.Context, env *callEnv) (err error) {
 				} else {
 					enc.Raw(cast)
 				}
+			case *io.PipeReader:
+				_, err := io.Copy(w, cast)
+				if err != nil {
+					return err
+				}
+				cast.Close()
 			case func(e io.Writer) error:
 				err = cast(w)
 			case func(e *jx.Writer) error: