Only teardown once set up has finished successfully.

Oh damn that is a flaw in my logic, the purpose of this was to always return an undefined or a promise. Then this filter removes everything which is undefined (all of the completed promises and all of the state changes which did not return a promise) leaving Strings (any state changes added to the array whilst the promises were still resolving)