You can attach a then
handler that sets a done
flag on the promise (or the RunTest
instance if you prefer), and test that:
if (!this.promise) {
this.promise = this.someTest();
this.promise.catch(() => {}).then(() => { this.promise.done = true; });
retVal = true;
}
if ( this.promise.done ) {
this.promise = this.someTest();
this.promise.catch(() => {}).then(() => { this.promise.done = true; });
retVal = true;
}
Notice the empty catch()
handler, it's crucial in order to have the handler called regardless of the outcome of the promise.
You probably want to wrap that in a function though to keep the code DRY.