**Approaches**
1) Toggle a variable - `$async_has_finished` . 
* Pros: works
* Cons: '$global' is a bad idea

2) Execute proc on each percent
* Pros: No `$global`
* Cons: Based on internet speed and file size this may not actually solve the problem! In general a fixed number of update steps (such as 100 for 'update on each percent') will not necessarily be "few enough" that the asyncExec queue doesn't overflow. If you opt for a small (and therefore safe) number of steps like 10, then you get choppy updating.

3) Peek at display#asyncExec queue and not send if something is full.
* Pros: A very simple and neat solution.
* Cons: I haven't found a way to look at the queue yet . . . maybe it doesn't exist.

If you like I can submit a PR with my code that updates on the percent, but right now I favor approach 1.