The following code works. It does an ajax request and then call 2 actions, on at a time:

```
export const loadThingsEpic = action$ => {

  return action$.ofType(LOAD_THINGS)
    .mergeMap(({things}) => {
      const requestURL = `${AppConfig.serverUrl()}/data/things`;
      return ajax.getJSON(requestURL)).map(response => {
        return finishLoadingThings(response);
      }).map(() => {
        return sendNotification('success');
      });
    })
    .catch(e => {
      return concat(of(finishLoadingThings({ things: {} })),
                    of(sendNotification('error')));

    });   
}}

```

But this code does not:

```
export const loadThingsEpic = action$ => {

  return action$.ofType(LOAD_THINGS)
    .mergeMap(({things}) => {
      const requestURL = `${AppConfig.serverUrl()}/data/things`;
      return ajax.getJSON(requestURL).switchMap(response => {
        return concat(of(finishLoadingThings(response)),
                      of(sendNotification('success')));
      });
    })
    .catch(e => {
      return concat(of(finishLoadingThings({ things: {} })),
                    of(sendNotification('error')));
    });   
}

```

I've replace the map by a switchMap to merge 2 actions together (as seen in many other post). It works in the catch if an exception is thrown. I'm wondering whats wrong with the code. I'm guessing it's because I can't seem to really grasp when to use: map, swicthMap and mergeMap.

sendNotification and finishLoadingthings returns action object:

```
export function finishLoadingThings(data: any) {
  return {
    type: FINISH_LOADING_THINGS,
    data,
  };
}

```

Thanks!