It doesn't have to be exact - if you know you're making 10 sub-calls, you can just make each 10% and call it a day. Still leaps and bounds better than a spinner.
How do those functions communicate their completion for reporting to the progress bar? And then what happens when some other engineers change how the backend works, meaning a different number of functions are used? It's significantly more complex to engineer all of this, and what value does it really provide? It's going to be just as bad if not worse
I guess you have not dealt with the 100% progress bar that never goes away?