Как правильно использовать async/await в связке react-redux?
Можно и без redux-thunk.
Просто создаете middlewareconst someMiddleware = store => next => action => {
  if(action.type === 'Нужный_вам_экшн'){
     loadData(store.dispatch);
  }
}
где loadData - асинхронная функцияconst  loadData = async(dispatch) =>{
  const resultData = await fetchDataFromServer();
  dispatch(actions.saveData(resultData));
}
Внутри компонента Вы, соответственно, вызываете экшн "Нужный_вам_экшн", его отловит someMiddleware, вызовет функцию loadData, которая собственно и сделает запрос к серверу.
Я думаю стоит использовать промисы.
В своем проекты я делаю что то вроде такого:export const getItems= () => {
  return async dispatch => {
    await axios.get(baseUrl + '/items', {
      params: {
        token:  someToken
      }
    })
      .then(res => {
         dispatch({type: 'GET_ITEM', data: res.data})           
         dispatch({ type: 'FETCH_SUCCESS' });

      })
      .catch(error => {
        dispatch({ type: 'FETCH_FAILED', message: error });
      });
  }
}