diff --git a/Tests/LibWeb/Text/expected/Streams/TransformStream-readable-cancel.txt b/Tests/LibWeb/Text/expected/Streams/TransformStream-readable-cancel.txt
new file mode 100644
index 00000000000..bb6822e559c
--- /dev/null
+++ b/Tests/LibWeb/Text/expected/Streams/TransformStream-readable-cancel.txt
@@ -0,0 +1,3 @@
+catch Error: error1
+catch Error: error1
+catch Error: error1
diff --git a/Tests/LibWeb/Text/input/Streams/TransformStream-readable-cancel.html b/Tests/LibWeb/Text/input/Streams/TransformStream-readable-cancel.html
new file mode 100644
index 00000000000..e6c11690caa
--- /dev/null
+++ b/Tests/LibWeb/Text/input/Streams/TransformStream-readable-cancel.html
@@ -0,0 +1,22 @@
+
+
diff --git a/Userland/Libraries/LibWeb/Streams/AbstractOperations.cpp b/Userland/Libraries/LibWeb/Streams/AbstractOperations.cpp
index 1fb00fa7781..97174cd619e 100644
--- a/Userland/Libraries/LibWeb/Streams/AbstractOperations.cpp
+++ b/Userland/Libraries/LibWeb/Streams/AbstractOperations.cpp
@@ -5168,7 +5168,7 @@ JS::NonnullGCPtr transform_stream_default_source_cancel_algorit
WebIDL::react_to_promise(
*cancel_promise,
// 1. If cancelPromise was fulfilled, then:
- JS::create_heap_function(realm.heap(), [&realm, writable, controller, &stream](JS::Value reason) -> WebIDL::ExceptionOr {
+ JS::create_heap_function(realm.heap(), [&realm, writable, controller, &stream, reason](JS::Value) -> WebIDL::ExceptionOr {
// 1. If writable.[[state]] is "errored", reject controller.[[finishPromise]] with writable.[[storedError]].
if (writable->state() == WritableStream::State::Errored) {
WebIDL::reject_promise(realm, *controller->finish_promise(), writable->stored_error());