ReadableStreamDefaultReader.js [plain text]
function initializeReadableStreamDefaultReader(stream)
{
"use strict";
if (!@isReadableStream(stream))
@throwTypeError("ReadableStreamDefaultReader needs a ReadableStream");
if (@isReadableStreamLocked(stream))
@throwTypeError("ReadableStream is locked");
@readableStreamReaderGenericInitialize(this, stream);
@putByIdDirectPrivate(this, "readRequests", []);
return this;
}
function cancel(reason)
{
"use strict";
if (!@isReadableStreamDefaultReader(this))
return @Promise.@reject(@makeThisTypeError("ReadableStreamDefaultReader", "cancel"));
if (!@getByIdDirectPrivate(this, "ownerReadableStream"))
return @Promise.@reject(@makeTypeError("cancel() called on a reader owned by no readable stream"));
return @readableStreamReaderGenericCancel(this, reason);
}
function read()
{
"use strict";
if (!@isReadableStreamDefaultReader(this))
return @Promise.@reject(@makeThisTypeError("ReadableStreamDefaultReader", "read"));
if (!@getByIdDirectPrivate(this, "ownerReadableStream"))
return @Promise.@reject(@makeTypeError("read() called on a reader owned by no readable stream"));
return @readableStreamDefaultReaderRead(this);
}
function releaseLock()
{
"use strict";
if (!@isReadableStreamDefaultReader(this))
throw @makeThisTypeError("ReadableStreamDefaultReader", "releaseLock");
if (!@getByIdDirectPrivate(this, "ownerReadableStream"))
return;
if (@getByIdDirectPrivate(this, "readRequests").length)
@throwTypeError("There are still pending read requests, cannot release the lock");
@readableStreamReaderGenericRelease(this);
}
@getter
function closed()
{
"use strict";
if (!@isReadableStreamDefaultReader(this))
return @Promise.@reject(@makeGetterTypeError("ReadableStreamDefaultReader", "closed"));
return @getByIdDirectPrivate(this, "closedPromiseCapability").@promise;
}