diff --git a/components/script/dom/htmlimageelement.rs b/components/script/dom/htmlimageelement.rs
index 65897f1c91ae..9379ebb48a95 100644
--- a/components/script/dom/htmlimageelement.rs
+++ b/components/script/dom/htmlimageelement.rs
@@ -296,7 +296,9 @@ impl HTMLImageElement {
self.upcast::().fire_event(atom!("error"));
}
- LoadBlocker::terminate(&mut self.current_request.borrow_mut().blocker);
+ if trigger_image_load || trigger_image_error {
+ LoadBlocker::terminate(&mut self.current_request.borrow_mut().blocker);
+ }
// Trigger reflow
let window = window_from_node(self);
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json
index 707150546885..2223d4e22827 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -93299,6 +93299,12 @@
{}
]
],
+ "html/semantics/embedded-content/the-img-element/delay-load-event.html": [
+ [
+ "/html/semantics/embedded-content/the-img-element/delay-load-event.html",
+ {}
+ ]
+ ],
"html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html": [
[
"/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html",
@@ -176326,6 +176332,10 @@
"bdbfbe9a5908c6233bd7b9697a0762bd2e0f6ede",
"testharness"
],
+ "html/semantics/embedded-content/the-img-element/delay-load-event.html": [
+ "e4782535af755b29864fd3de67bbdd0de13f19d7",
+ "testharness"
+ ],
"html/semantics/embedded-content/the-img-element/document-adopt-base-url.html": [
"a4b542eb344cca6bdcceceb3aa7006e900f5400f",
"reftest"
diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/delay-load-event.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/delay-load-event.html
new file mode 100644
index 000000000000..c67074a40d89
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/delay-load-event.html
@@ -0,0 +1,17 @@
+
+
+Image element delays window's load event
+
+
+
+