patch 7.4.1278
Problem:    When jsonencode() fails it still returns something.
Solution:   Return an empty string on failure.
diff --git a/src/testdir/test_channel.py b/src/testdir/test_channel.py
index d8830c5..40a2043 100644
--- a/src/testdir/test_channel.py
+++ b/src/testdir/test_channel.py
@@ -93,6 +93,13 @@
                         print("sending: {}".format(cmd))
                         self.request.sendall(cmd.encode('utf-8'))
                         response = "ok"
+                    elif decoded[1] == 'eval-error':
+                        # Send an eval request that works but the result can't
+                        # be encoded.
+                        cmd = '["eval","function(\\"tr\\")", -3]'
+                        print("sending: {}".format(cmd))
+                        self.request.sendall(cmd.encode('utf-8'))
+                        response = "ok"
                     elif decoded[1] == 'eval-bad':
                         # Send an eval request missing the third argument.
                         cmd = '["eval","xxx"]'