failed promise returns a rejected promise for chaining