in internal/kernel/process/process.go [208:237]
func (p *Process) readResponse(into interface{}) error {
if !p.responses.More() {
return fmt.Errorf("no response received from child process")
}
var raw json.RawMessage
var respmap map[string]interface{}
err := p.responses.Decode(&raw)
if err != nil {
return err
}
err = json.Unmarshal(raw, &respmap)
if err != nil {
return err
}
var errResp ErrorResponse
if _, ok := respmap["error"]; ok {
json.Unmarshal(raw, &errResp)
if errResp.Name != nil && *errResp.Name == "@jsii/kernel.Fault" {
return fmt.Errorf("JsiiError: %s %s", *errResp.Name, errResp.Error)
}
return errors.New(errResp.Error)
}
return json.Unmarshal(raw, &into)
}