in internal/kernel/json.go [15:40]
func unmarshalKernelResponse(data []byte, uresult kernelResponder, result kernelResponder) error {
datacopy := make([]byte, len(data))
copy(datacopy, data)
var response map[string]json.RawMessage
if err := json.Unmarshal(datacopy, &response); err != nil {
return err
}
if err, ok := response["error"]; ok {
return errors.New(string(err))
}
// In-line callback requests interrupt the current flow, the callback handling
// logic will resume this handling once the callback request has been fulfilled.
if raw, ok := response["callback"]; ok {
callback := callback{}
if err := json.Unmarshal(raw, &callback); err != nil {
return err
}
return callback.handle(result)
}
return json.Unmarshal(response["ok"], uresult)
}