The main problem is we don't know how many cycle dataFunction will run and how much time that it will take to finish the cycle (May require much time if the data set is very large).
The situation will become even complicated when increment loading is applied to the chart whereby dataFunction will run when user perform drilldown or scroll left or right.
So settimeout may not be the best solution as we don't when time chart will finish to plot the data and ready to runreloadData().