exhaustMap is used, actions will be ignored until the pending backend request is fulfilled. Any pending request will either be fulfilled or rejected independent of actions dispatched whilst it’s pending.
switchMap is used, each dispatched action will abort any pending request and initiate a new one. So, nothing will be fulfilled until actions cease to be dispatched — i.e. they stop clicking the button.