From b6c033f2ba044c3a559cc64be2813d03a1c53369 Mon Sep 17 00:00:00 2001
From: a <a@tuxpa.in>
Date: Sat, 11 Nov 2023 07:01:33 -0600
Subject: [PATCH] jx encoder lazy

---
 pkg/server/server.go | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/pkg/server/server.go b/pkg/server/server.go
index 0472147..350bce9 100644
--- a/pkg/server/server.go
+++ b/pkg/server/server.go
@@ -327,19 +327,23 @@ func (c *callResponder) send(ctx context.Context, env *callEnv) (err error) {
 						} else {
 							e.Raw(cast)
 						}
+					case func(e *jx.Encoder) error:
+						err = cast(e)
 					default:
 						err = json.NewEncoder(e).EncodeWithOption(cast, func(eo *json.EncodeOption) {
 							eo.DisableNewline = true
 						})
-						if err != nil {
-							return
-						}
 					}
 				} else {
 					e.Null()
 				}
 			})
 		}
+		if env.err == nil && err != nil {
+			e.Field("error", func(e *jx.Encoder) {
+				jsonrpc.EncodeError(e, err)
+			})
+		}
 	})
 	// a json encoding error here is possibly fatal....
 	if err != nil {
-- 
GitLab