Tengo este programa para enviar bytes desde JavaScript a Golang WebAssembly usando el código:
func sendBytes(this js.Value, args []js.Value) interface{} { if len(args) < 1 { return 0 } array := args[0] fmt.Println(array.Type()) buf := make([]byte, array.Length()) n := js.CopyBytesToGo(buf, array) fmt.Println(buf) return n } func registerCallbacks() { js.Global().Set("sendBytes", js.FuncOf(sendBytes)) } Cuando ejecuto sendBytes con otra cosa que no sea Uint8Array , se elimina toda mi instancia en el navegador y tengo que ejecutarla nuevamente. Esta es una captura de pantalla de cómo ejecuto sendBytes(). 
¿Cómo puedo mantenerlo funcionando sin importar el error que haya ocurrido?
De acuerdo con su captura de pantalla, cuando pasó un número a sendBytes() , la línea de código array.Length() generaría pánico, luego el código WASM saldría. Como sabe, no se debe llamar a sendBytes() en un número.
Si realmente lo necesita para seguir ejecutándose, puede usar la recover en Go, similar a:
func sendBytes(this js.Value, args []js.Value) interface{} { defer func() { if r := recover(); r != nil { fmt.Println("Recovered from", r) } }() if len(args) < 1 { return 0 } // ... }