You could catch the failing promise.
Something like this. Not tested.
start().then(result => something())
.then(result => thisFails())
// this catch is called
.catch(error => cleanup())
// after the catch the chain goes on
.then(result => success())
// this exception is ignored
.catch(error => cleanup())
// also called
.then(result => final())
...
not very elegant but it could work.