diff --git a/Tests/LibWeb/Text/expected/fetch-timed-out-request.txt b/Tests/LibWeb/Text/expected/fetch-timed-out-request.txt
new file mode 100644
index 00000000000..aaecaf93c4a
--- /dev/null
+++ b/Tests/LibWeb/Text/expected/fetch-timed-out-request.txt
@@ -0,0 +1 @@
+PASS (didn't crash)
diff --git a/Tests/LibWeb/Text/input/fetch-timed-out-request.html b/Tests/LibWeb/Text/input/fetch-timed-out-request.html
new file mode 100644
index 00000000000..f48693e6520
--- /dev/null
+++ b/Tests/LibWeb/Text/input/fetch-timed-out-request.html
@@ -0,0 +1,12 @@
+
+
+
diff --git a/Userland/Libraries/LibWeb/Fetch/FetchMethod.cpp b/Userland/Libraries/LibWeb/Fetch/FetchMethod.cpp
index 553d11bf022..70eb6be1fc9 100644
--- a/Userland/Libraries/LibWeb/Fetch/FetchMethod.cpp
+++ b/Userland/Libraries/LibWeb/Fetch/FetchMethod.cpp
@@ -142,6 +142,9 @@ JS::NonnullGCPtr fetch(JS::VM& vm, RequestInfo const& input, Reques
// 3. Abort controller with requestObject’s signal’s abort reason.
controller->abort(relevant_realm, request_object->signal()->reason());
+ // AD-HOC: An execution context is required for Promise functions.
+ HTML::TemporaryExecutionContext execution_context { Bindings::host_defined_environment_settings_object(relevant_realm) };
+
// 4. Abort the fetch() call with p, request, responseObject, and requestObject’s signal’s abort reason.
abort_fetch(relevant_realm, *promise_capability, request, response_object, request_object->signal()->reason());
});