BoundaryML/baml · error

failed to get text: %w

Error message

failed to get text: %w

What it means

httpBody.Text() fetches the HTTP response body as text via the 'text' bridge method. This error wraps any failure of that bridge call (disposed object, missing method, runtime exception); it is the wrapping variant before the string type assertion.

Source

Thrown at engine/language_client_go/pkg/rawobjects_http_body.go:30

	*raw_objects.RawObject
}

func newHTTPBody(ptr int64, rt unsafe.Pointer) HTTPBody {
	return &httpBody{raw_objects.FromPointer(ptr, rt)}
}

func (h *httpBody) ObjectType() cffi.BamlObjectType {
	return cffi.BamlObjectType_OBJECT_HTTP_BODY
}

func (h *httpBody) pointer() int64 {
	return h.RawObject.Pointer()
}

func (h *httpBody) Text() (string, error) {
	result, err := raw_objects.CallMethod(h, "text", nil)
	if err != nil {
		return "", fmt.Errorf("failed to get text: %w", err)
	}

	text, ok := result.(string)
	if !ok {
		return "", fmt.Errorf("unexpected type for text: %T", result)
	}

	return text, nil
}

func (h *httpBody) JSON() (any, error) {
	result, err := raw_objects.CallMethod(h, "json", nil)
	if err != nil {
		return nil, fmt.Errorf("failed to get JSON: %w", err)
	}

	return result, nil
}

View on GitHub (pinned to bd85ce9dee)

Solutions

  1. Read the wrapped root error to identify the bridge failure
  2. Avoid consuming the body before calling Text(); fetch once and cache the result
  3. Re-obtain the http body object from a fresh response
Defensive patterns

Strategy: try-catch

Validate before calling

if h == nil || h.RawObject == nil { return "", errors.New("nil http body") }

Try / catch

text, err := body.Text()
if err != nil {
    return "", fmt.Errorf("body text unavailable: %w", err)
}

Prevention

When it happens

Trigger: Calling HttpBody.Text() when the bridge fails to invoke 'text' on the body object, e.g. the body was already consumed or the runtime object is stale.

Common situations: Reading the body twice in the runtime (streams are consumed); response object released before Text() is called; runtime binding version drift.

Understand the failure class

Background: Type mismatch errors: IllegalArgumentException, TypeError and type guards across 150 open-source libraries — this error's family across 150 libraries.

Related errors


AI-assisted analysis of BoundaryML/baml@bd85ce9dee (2026-09-12). Data as JSON: /api/errors/73fa467e6e2bb597. Report an issue: GitHub.