Its more to do with the fact that we need to track the non-async case also. Migration being one of the non-async cases .. The UI is written in a such way that if a task does not  exist, its automatically assumes that the publish or refresh operation broke. We either had to change the UI logic or track the non async cases by adding a task status. Chose the later after discussing with @jlsherrill and @bbuckingham