diff --git a/Userland/Libraries/LibWeb/Streams/AbstractOperations.cpp b/Userland/Libraries/LibWeb/Streams/AbstractOperations.cpp index 31aa3eaefb..1e9b8fe437 100644 --- a/Userland/Libraries/LibWeb/Streams/AbstractOperations.cpp +++ b/Userland/Libraries/LibWeb/Streams/AbstractOperations.cpp @@ -505,6 +505,21 @@ WebIDL::ExceptionOr readable_stream_default_reader_release(ReadableStreamD return {}; } +// https://streams.spec.whatwg.org/#abstract-opdef-readablestreambyobreaderrelease +void readable_stream_byob_reader_release(ReadableStreamBYOBReader& reader) +{ + auto& realm = reader.realm(); + + // 1. Perform ! ReadableStreamReaderGenericRelease(reader). + MUST(readable_stream_reader_generic_release(reader)); + + // 2. Let e be a new TypeError exception. + auto exception = MUST(JS::TypeError::create(realm, "Reader has been released"sv)); + + // 3. Perform ! ReadableStreamBYOBReaderErrorReadIntoRequests(reader, e). + readable_stream_byob_reader_error_read_into_requests(reader, exception); +} + // https://streams.spec.whatwg.org/#set-up-readable-stream-default-reader WebIDL::ExceptionOr set_up_readable_stream_default_reader(ReadableStreamDefaultReader& reader, ReadableStream& stream) { diff --git a/Userland/Libraries/LibWeb/Streams/AbstractOperations.h b/Userland/Libraries/LibWeb/Streams/AbstractOperations.h index 9404ba445c..bc58aa39dd 100644 --- a/Userland/Libraries/LibWeb/Streams/AbstractOperations.h +++ b/Userland/Libraries/LibWeb/Streams/AbstractOperations.h @@ -54,6 +54,7 @@ void readable_stream_byob_reader_error_read_into_requests(ReadableStreamBYOBRead WebIDL::ExceptionOr readable_stream_default_reader_read(ReadableStreamDefaultReader&, ReadRequest&); WebIDL::ExceptionOr readable_stream_default_reader_release(ReadableStreamDefaultReader&); +void readable_stream_byob_reader_release(ReadableStreamBYOBReader&); WebIDL::ExceptionOr set_up_readable_stream_default_reader(ReadableStreamDefaultReader&, ReadableStream&); WebIDL::ExceptionOr set_up_readable_stream_byob_reader(ReadableStreamBYOBReader&, ReadableStream&); void readable_stream_default_controller_close(ReadableStreamDefaultController&);