grafana/k6 · error
a value for '%s' should be callable
Error message
a value for '%s' should be callable
What it means
Type guard in the WebSocket event-handler setter: on<event> (e.g., onopen, onmessage, onclose, onerror) was assigned a non-null value that is not a function. Setting the handler to null/undefined is allowed and unsets it, but any other non-callable value (number, string, object) is rejected, mirroring the browser behavior where event handler IDL attributes must be callbacks or null.
Source
Thrown at internal/js/modules/k6/websockets/websockets.go:255
common.Throw(rt, fmt.Errorf("not supported on-handler '%s'", property))
}
must(rt, w.obj.DefineAccessorProperty(
property, rt.ToValue(func() sobek.Value {
return rt.ToValue(el.getOn)
}), rt.ToValue(func(call sobek.FunctionCall) sobek.Value {
arg := call.Argument(0)
// it's possible to unset handlers by setting them to null
if common.IsNullish(arg) {
el.setOn(nil)
return nil
}
fn, isFunc := sobek.AssertFunction(arg)
if !isFunc {
common.Throw(rt, fmt.Errorf("a value for '%s' should be callable", property))
}
el.setOn(func(v sobek.Value) (sobek.Value, error) { return fn(sobek.Undefined(), v) })
return nil
}), sobek.FLAG_FALSE, sobek.FLAG_TRUE))
}
setOn("onmessage", w.eventListeners.getType(events.MESSAGE))
setOn("onerror", w.eventListeners.getType(events.ERROR))
setOn("onopen", w.eventListeners.getType(events.OPEN))
setOn("onclose", w.eventListeners.getType(events.CLOSE))
setOn("onping", w.eventListeners.getType(events.PING))
setOn("onpong", w.eventListeners.getType(events.PONG))
defineReadyStateProperties(rt, w.obj)
}
View on GitHub (pinned to 165bb3c1a4)
Solutions
- Assign a function to the on<event> property: ws.onmessage = (ev) => { ... }
- Use ws.addEventListener('message', handler) as an alternative
- Pass null instead of a non-function value when clearing a handler
Defensive patterns
Strategy: type-guard
When it happens
Trigger: Thrown at internal/js/modules/k6/websockets/websockets.go:244 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of grafana/k6@165bb3c1a4 (2026-08-18).
Data as JSON: /api/errors/e2435cc458ad2832.
Report an issue: GitHub.