code: function pump(reader, handler) {
  	reader.read().then(result => {
  		if (result.done) {
  			return;
  		}
  		if (handler(result.value) === false) {
  			// cancelling
  			return;
  		}
  		pump(reader, handler);
  	});
  }
docs: reads all chunks