I have a promise that can resolve or reject. I want to do something specific in those cases, and then continue resolving the promise chain (essentially I want to "catch" the rejected promise, do something, then continue resolving). 

Here's a functional snippet that shows the issue I'm running into :

```js
var def = $.Deferred();
def.then(
  function() {
    console.log('first success handler');
  },
  function() {
    console.log('first fail handler');
    return $.Deferred().resolve();
  }
);
def.then(
  function() {
    console.log('second success handler');
  },
  function() {
    console.log('second fail handler');
  }
);
def.done(function() {
  console.log('done handler');
});

def.reject();
```

```html
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
```

Expected result :

```
first fail handler
second success handler
done handler

```

Current result :

```
first fail handler
second fail handler

```

According to jQuery docs :

> 
> As of jQuery 1.8, the deferred.then() method returns a new promise
>  that can filter the status and values of a deferred through a
>  function[...]. These filter functions can return a new value to be
>  passed along to the promise's .done() or .fail() callbacks, or they
>  can return another observable object (Deferred, Promise, etc) which
>  will pass its resolved / rejected status and values to the promise's
>  callbacks.
> 
> 
> 

So I have no idea why this is not working. I expected the returned resolved promise in the first fail handler to allow the rest of the promise chain to continue resolving.