response-error-from-stream.any.js (3093B)
1 // META: global=window,worker 2 // META: title=Response Receives Propagated Error from ReadableStream 3 4 function newStreamWithStartError() { 5 var err = new Error("Start error"); 6 return [new ReadableStream({ 7 start(controller) { 8 controller.error(err); 9 } 10 }), 11 err] 12 } 13 14 function newStreamWithPullError() { 15 var err = new Error("Pull error"); 16 return [new ReadableStream({ 17 pull(controller) { 18 controller.error(err); 19 } 20 }), 21 err] 22 } 23 24 function runRequestPromiseTest([stream, err], responseReaderMethod, testDescription) { 25 promise_test(test => { 26 return promise_rejects_exactly( 27 test, 28 err, 29 new Response(stream)[responseReaderMethod](), 30 'CustomTestError should propagate' 31 ) 32 }, testDescription) 33 } 34 35 36 promise_test(test => { 37 var [stream, err] = newStreamWithStartError(); 38 return promise_rejects_exactly(test, err, stream.getReader().read(), 'CustomTestError should propagate') 39 }, "ReadableStreamDefaultReader Promise receives ReadableStream start() Error") 40 41 promise_test(test => { 42 var [stream, err] = newStreamWithPullError(); 43 return promise_rejects_exactly(test, err, stream.getReader().read(), 'CustomTestError should propagate') 44 }, "ReadableStreamDefaultReader Promise receives ReadableStream pull() Error") 45 46 47 // test start() errors for all Body reader methods 48 runRequestPromiseTest(newStreamWithStartError(), 'arrayBuffer', 'ReadableStream start() Error propagates to Response.arrayBuffer() Promise'); 49 runRequestPromiseTest(newStreamWithStartError(), 'blob', 'ReadableStream start() Error propagates to Response.blob() Promise'); 50 runRequestPromiseTest(newStreamWithStartError(), 'bytes', 'ReadableStream start() Error propagates to Response.bytes() Promise'); 51 runRequestPromiseTest(newStreamWithStartError(), 'formData', 'ReadableStream start() Error propagates to Response.formData() Promise'); 52 runRequestPromiseTest(newStreamWithStartError(), 'json', 'ReadableStream start() Error propagates to Response.json() Promise'); 53 runRequestPromiseTest(newStreamWithStartError(), 'text', 'ReadableStream start() Error propagates to Response.text() Promise'); 54 55 // test pull() errors for all Body reader methods 56 runRequestPromiseTest(newStreamWithPullError(), 'arrayBuffer', 'ReadableStream pull() Error propagates to Response.arrayBuffer() Promise'); 57 runRequestPromiseTest(newStreamWithPullError(), 'blob', 'ReadableStream pull() Error propagates to Response.blob() Promise'); 58 runRequestPromiseTest(newStreamWithPullError(), 'bytes', 'ReadableStream pull() Error propagates to Response.bytes() Promise'); 59 runRequestPromiseTest(newStreamWithPullError(), 'formData', 'ReadableStream pull() Error propagates to Response.formData() Promise'); 60 runRequestPromiseTest(newStreamWithPullError(), 'json', 'ReadableStream pull() Error propagates to Response.json() Promise'); 61 runRequestPromiseTest(newStreamWithPullError(), 'text', 'ReadableStream pull() Error propagates to Response.text() Promise');