return a new promise from then instead of the original promise