// META: global=window,worker,jsshell
'use strict';

const error1 = new Error('error1');
error1.name = 'error1';

const error2 = new Error('error2');
error2.name = 'error2';

test(() => {
  const underlyingSource = { get start() { throw error1; } };
  const queuingStrategy = { highWaterMark: 0, get size() { throw error2; } };

  // underlyingSource is converted in prose in the method body, whereas queuingStrategy is done at the IDL layer.
  // So the queuingStrategy exception should be encountered first.
  assert_throws_exactly(error2, () => new ReadableStream(underlyingSource, queuingStrategy));
}, 'underlyingSource argument should be converted after queuingStrategy argument');
