diff --git a/src/browser/ScriptManager.zig b/src/browser/ScriptManager.zig
index 06e94083..5f916fed 100644
--- a/src/browser/ScriptManager.zig
+++ b/src/browser/ScriptManager.zig
@@ -218,7 +218,7 @@ pub fn addFromElement(self: *ScriptManager, script_element: *Element.Html.Script
.url = remote_url orelse page.url,
.mode = blk: {
if (source == .@"inline") {
- break :blk .normal;
+ break :blk if (kind == .module) .@"defer" else .normal;
}
if (element.getAttributeSafe("async") != null) {
break :blk .async;
diff --git a/src/browser/tests/element/html/script/order.html b/src/browser/tests/element/html/script/order.html
new file mode 100644
index 00000000..159e68cc
--- /dev/null
+++ b/src/browser/tests/element/html/script/order.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/browser/tests/element/html/script/order.js b/src/browser/tests/element/html/script/order.js
new file mode 100644
index 00000000..31e602fc
--- /dev/null
+++ b/src/browser/tests/element/html/script/order.js
@@ -0,0 +1,2 @@
+list += 'a';
+testing.expectEqual('a', list);
diff --git a/src/browser/tests/element/html/script/order_async.js b/src/browser/tests/element/html/script/order_async.js
new file mode 100644
index 00000000..343b7e69
--- /dev/null
+++ b/src/browser/tests/element/html/script/order_async.js
@@ -0,0 +1,2 @@
+list += 'f';
+testing.expectEqual('abcdef', list);
diff --git a/src/browser/tests/element/html/script/order_defer.js b/src/browser/tests/element/html/script/order_defer.js
new file mode 100644
index 00000000..3911b644
--- /dev/null
+++ b/src/browser/tests/element/html/script/order_defer.js
@@ -0,0 +1,2 @@
+list += 'e';
+testing.expectEqual('abcde', list);
diff --git a/src/browser/webapi/event/ErrorEvent.zig b/src/browser/webapi/event/ErrorEvent.zig
index 257cf178..08124d7f 100644
--- a/src/browser/webapi/event/ErrorEvent.zig
+++ b/src/browser/webapi/event/ErrorEvent.zig
@@ -103,7 +103,7 @@ pub const JsApi = struct {
pub const filename = bridge.accessor(ErrorEvent.getFilename, null, .{});
pub const lineno = bridge.accessor(ErrorEvent.getLineNumber, null, .{});
pub const colno = bridge.accessor(ErrorEvent.getColumnNumber, null, .{});
- pub const @"error" = bridge.accessor(ErrorEvent.getError, null, .{});
+ pub const @"error" = bridge.accessor(ErrorEvent.getError, null, .{ .null_as_undefined = true });
};
const testing = @import("../../../testing.zig");