title: Will outermost .catch() work for all chained / nested promisses?
body: <p>I have a bit of a long login process that relies on 3 api calls that looks like this at the moment:</p>
  
  <pre><code>export const authenticationSignIn = (email, password) =&gt;
    (dispatch) =&gt; {
      dispatch({ type: AUTHENTICATION_REQUEST });
      apiAccountStatus(email, password)
      .then(({ data }) =&gt; {
        const status = data.status;
        if (status === 'ACCOUNT_CREATED') {
          apiSignIn(email, password)
          .then(({ data: sessionData }) =&gt; {
            apiIndexAccounts()
            .then(({ data: accountsData }) =&gt; {
              dispatch({ type: AUTHENTICATION_SUCCESS });
              window.router.transitionTo('/dashboard/home');
            });
          });
        } else if (status === 'SOMETHING ELSE') {
          // TODO: HANDLE SOMETHING ELSE
        }
      })
      .catch(({ response }) =&gt; {
        dispatch({ type: AUTHENTICATION_FAILURE });
        dispatch(notificationShow('ERROR', response.data.type));
      });
    };
  </code></pre>
  
  <p>As you can see this function is quiet verbose, but each nested api call relies on data returned from previous and I am trying to clean this up as much as possible (dispatch bits are redux specific, but these essentially fire whatever is passed in). At the end you will see a <code>catch</code> statement, my question is will this catch statement work for all of the promisses or only <code>apiAccountStatus</code>?</p>