function _error(errform, env, d, hdlrs, st, errp) {
errp[1] = 1
if(_is_null(hdlrs)) {
_abort(errform, env, d, hdlrs, st, errp)
} else {
# we have to get back to the (awk) frame where the handler was
# added. there are checks for errp[1] in plenty of places
# above that forestall further evaluation until the handler
# kicks in. since we are unwinding the (awk) stack, there is
# no chance for the error to return anything: instead, the
# (handle...) form will return the result of its handler.
return _nil()
}
}