json/call.go
func wrapCall(ctx Context, call *tchannel.OutboundCall, method string, arg, resp interface{}) error {
	var respHeaders map[string]string
	var respErr ErrApplication
	isOK, errAt, err := makeCall(call, ctx.Headers(), arg, &respHeaders, resp, &respErr)
	if err != nil {
		return fmt.Errorf("%s: %v", errAt, err)
	}
	if !isOK {
		return respErr
	}

	ctx.SetResponseHeaders(respHeaders)
	return nil
}
func wrapCall(ctx Context, call *tchannel.OutboundCall, method string, arg, resp interface{}) error {
	var respHeaders map[string]string
	var respErr ErrApplication
	isOK, errAt, err := makeCall(call, ctx.Headers(), arg, &respHeaders, resp, &respErr)
	if err != nil {
		return fmt.Errorf("%s: %v", errAt, err)
	}
	if !isOK {
		return respErr
	}

	ctx.SetResponseHeaders(respHeaders)
	return nil
}
// TODO(prashantv): Clean up json.Call* interfaces.