It does. The fetch response object exposes a `ReadableStream` through the `body` property, which you can loop through with a `for await ... of` loop. On each iteration, simply update your progress.
[1]:https://tejasq.github.io/basically-streams/examples/fetch/