title: Redux sagas Fetch only once when same id is dispatched multiple times
body: <p>I’m getting a user from my API and store it in my state so I don’t have to fetch it again.
  Problem is that multiple components requests the user at the same time resulting in multiple concurrent fetch requests.</p>
  
  <p>Is there a good pattern to avoid this?</p>
  
  <p>This is my saga</p>
  
  <pre><code>function* watchUserRequests() {
      yield takeEvery(actionTypes.USER_REQUESTED, userRequested);
  }
  
  function* userRequested(action) {
      const {id} = action.payload;
      let user = yield select(state =&gt; state.users.all[id]);
      // cancel if user exists      
      if (user) return;
      user = yield call(userApi.get, id);
      yield put(userActions.userLoaded(id, banner));
  }
  </code></pre>
  
  <p>Actions</p>
  
  <pre><code>export function userRequested(id) {
      return {type: types.USER_REQUESTED, payload: {id}};
  }
  
  export function userLoaded(id, user) {
      return {type: types.USER_LOADED, payload: {id, user}};
  }
  </code></pre>