Observables de RxJs: ejecutar retryCuando después de algunas solicitudes asíncronas más

Mi caso de uso es:

El usuario solicita un activo de nuestra API que falla debido a que JWT caduca (se pasa como una cookie httpOnly): la API devuelve un código de estado 401.Vamos y los autenticamos (sin que el usuario haga nada) nuevamente usando un refresh_token para recuperar un nuevo JWT con una solicitud de nuestro cliente para auth0.Enviamos ese nuevo JWT a nuestra API para que se configure como una cookie httpOnly para reemplazar la caducada.Luego, queremos volver a intentar la solicitud original que el usuario hizo a la API en el paso 1.

Estoy tratando de usar Observables dentro de mi aplicación Redux conredux-observable. Si puede pensar en otra forma de hacer que el flujo de usuarios anterior funcione, me encantaría saber cómo.

NÓTESE BIEN. Estoy usandorxjs V5

export const fetchAssetListEpic = (action$, store) => {
  return action$.ofType('FETCH_ASSET_LIST')
  .switchMap( action => {
    const options = {
      crossDomain: true,
      withCredentials: true,
      url: uriGenerator('assetList', action.payload)
    };
    return ajax(options);
  })
  .map(fetchAssetListSuccess)
  .retryWhen(handleError)
  .catch(redirectToSignIn);
};

function handleError(err) {
  return (err.status === 401) ? 
  /* Authenticate here [Step 2] */
  /* Send new JWT to API [Step 3] */
  /* If successful make original request again [Step 4] */
  :
  Observable.throw(err);
}
  
function redirectToSignIn() {
  /*I will redirect here*/
}

Hasta ahora he podido completar los pasos 1, 2 y 3, pero no estoy muy seguro de cómo agregar el paso 4. ¡Puedo estar completamente fuera de lugar, pero cualquier ayuda sería genial!

Respuestas a la pregunta(1)

Su respuesta a la pregunta