@@ -326,11 +326,15 @@ func (w *wasmClient) Status(_ js.Value, _ []js.Value) interface{} {
326326
327327func (w * wasmClient ) InvokeRPC (_ js.Value , args []js.Value ) interface {} {
328328 if len (args ) != 3 {
329+ log .Errorf ("Invalid use of wasmClientInvokeRPC, need 3 " +
330+ "parameters: rpcName, request, callback" )
329331 return js .ValueOf ("invalid use of wasmClientInvokeRPC, " +
330332 "need 3 parameters: rpcName, request, callback" )
331333 }
332334
333335 if w .lndConn == nil {
336+ log .Errorf ("Attempted to invoke RPC but connection is not " +
337+ "ready" )
334338 return js .ValueOf ("RPC connection not ready" )
335339 }
336340
@@ -340,16 +344,29 @@ func (w *wasmClient) InvokeRPC(_ js.Value, args []js.Value) interface{} {
340344
341345 method , ok := w .registry [rpcName ]
342346 if ! ok {
347+ log .Errorf ("RPC method '%s' not found in registry" , rpcName )
343348 return js .ValueOf ("rpc with name " + rpcName + " not found" )
344349 }
345350
346351 go func () {
352+ defer func () {
353+ if r := recover (); r != nil {
354+ errMsg := fmt .Sprintf ("Panic in RPC call: " +
355+ "%v" , r )
356+ log .Errorf ("%s\n %s" , errMsg , debug .Stack ())
357+ jsCallback .Invoke (js .ValueOf (errMsg ))
358+ }
359+ }()
360+
347361 log .Infof ("Calling '%s' on RPC with request %s" ,
348362 rpcName , requestJSON )
349363 cb := func (resultJSON string , err error ) {
350364 if err != nil {
365+ log .Errorf ("RPC '%s' failed: %v" , rpcName , err )
351366 jsCallback .Invoke (js .ValueOf (err .Error ()))
352367 } else {
368+ log .Debugf ("RPC '%s' succeeded with result: %s" ,
369+ rpcName , resultJSON )
353370 jsCallback .Invoke (js .ValueOf (resultJSON ))
354371 }
355372 }
@@ -358,7 +375,6 @@ func (w *wasmClient) InvokeRPC(_ js.Value, args []js.Value) interface{} {
358375 <- ctx .Done ()
359376 }()
360377 return nil
361-
362378}
363379
364380func (w * wasmClient ) GetExpiry (_ js.Value , _ []js.Value ) interface {} {
0 commit comments