const useRequest3 = (url, pollInterval) => {
  const [state, dispatch] = React.useReducer(reducer, {
    ...
    requestId: 1,
  });

 React.useEffect(() => {
   …(fetch data)
 }, [state.url, state.requestId]);

 React.useEffect(() => {
   if (!pollInterval || state.isFetching) return;
   const timeoutId = setTimeout(() => {
     dispatch({ type: "poll" });
   }, pollInterval);

   return () => {
     clearTimeout(timeoutId);
   };
 }, [pollInterval, state.isFetching]);

...
}