1const methods = [ 2 "compileStreaming", 3 "instantiateStreaming", 4]; 5 6for (const method of methods) { 7 promise_test(async t => { 8 const controller = new AbortController(); 9 const signal = controller.signal; 10 controller.abort(); 11 const request = fetch('../incrementer.wasm', { signal }); 12 return promise_rejects_dom(t, 'AbortError', WebAssembly[method](request), 13 `${method} should reject`); 14 }, `${method}() on an already-aborted request should reject with AbortError`); 15 16 promise_test(async t => { 17 const controller = new AbortController(); 18 const signal = controller.signal; 19 const request = fetch('../incrementer.wasm', { signal }); 20 const promise = WebAssembly[method](request); 21 controller.abort(); 22 return promise_rejects_dom(t, 'AbortError', promise, `${method} should reject`); 23 }, `${method}() synchronously followed by abort should reject with AbortError`); 24 25 promise_test(async t => { 26 const controller = new AbortController(); 27 const signal = controller.signal; 28 return fetch('../incrementer.wasm', { signal }) 29 .then(response => { 30 Promise.resolve().then(() => controller.abort()); 31 return WebAssembly[method](response); 32 }) 33 .catch(err => { 34 assert_equals(err.name, "AbortError"); 35 }); 36 }, `${method}() asynchronously racing with abort should succeed or reject with AbortError`); 37} 38