Improve ergonomics around rejecting a promise with a proper JS error

This commit is contained in:
Karl Seguin
2026-03-15 09:55:13 +08:00
parent 42bb2f3c58
commit 4b6bf29b83

View File

@@ -63,6 +63,20 @@ pub fn reject(self: PromiseResolver, comptime source: []const u8, value: anytype
}; };
} }
const RejectError = union(enum) {
generic: []const u8,
type_error: []const u8,
};
pub fn rejectError(self: PromiseResolver, comptime source: []const u8, err: RejectError) void {
const handle = switch (err) {
.type_error => |str| self.local.isolate.createTypeError(str),
.generic => |str| self.local.isolate.createError(str)
};
self._reject(js.Value{.handle = handle, .local = self.local}) catch |reject_err| {
log.err(.bug, "rejectError", .{ .source = source, .err = reject_err, .persistent = false });
};
}
fn _reject(self: PromiseResolver, value: anytype) !void { fn _reject(self: PromiseResolver, value: anytype) !void {
const local = self.local; const local = self.local;
const js_val = try local.zigValueToJs(value, .{}); const js_val = try local.zigValueToJs(value, .{});