I found that ProgressBar doesn't update first time it's used. It doesn't repaint upon updateText(), which is the strongest repaint measure I found in the ProgressBar.
Further usages are fine. The problem looks like there's some delayed initialization in its guts, which prevents from doing redraw(). Method onRedraw() doesn't get invoked. It's only invoked once, while it hash to show progress and final message. Update code is fine and works as expected during other invocations except first one.
That's a complicated logic of checking progress by making remote calls. So it's very time consuming to derive a simple test case from it.
Another desirable feature is to have a method that updates UI if either text or progree value is changed.
Currently, updateProgress ignores text changes if progress value is equal to previous one.
On the other hand updateText does the job with redraw(true), while updateProgress only uses redraw(false). Better if it's true in both cases I guess.