// META: script=../resources/utils.js

function streamBody(reader, test, count) {
  return reader.read().then(function(data) {
    if (!data.done && count < 2) {
      count += 1;
      return streamBody(reader, test, count);
    } else {
      test.step(function() {
        assert_true(count >= 2, "Retrieve body progressively");
      });
    }
  });
}

//simulate streaming:
//count is large enough to let the UA deliver the body before it is completely retrieved
promise_test(function(test) {
  return fetch(RESOURCES_DIR + "trickle.py?ms=30&count=100").then(function(resp) {
    var count = 0;
    if (resp.body)
      return streamBody(resp.body.getReader(), test, count);
    else
      test.step(function() {
        assert_unreached( "Body does not exist in response");
      });
  });
}, "Stream response's body");
