So, one of my fetchers (for user data) was failing, which was fine. I had a catch in place, and
my other requests came through the store. The API server responded to all requests,
and the logging information I added to my reducers showed me that the rest of my requests were
being merged into my store.
What happened on actual production server, but not locally, is that the Promise.all resolved as
soon as the request rejected, started rendering out my app, but with the store in the state it was
before one of my other requests was processed by its reducer. So all my logging information showed
me that everything was working fine (request reaching API, reducer running), while in practice it
never reached the state I expected the UI to be in.
This exposed a huge flaw in my logic (the request I was fine with failing should never be made if it's gonna fail, which I wasn't guarding against), but it caught me off guard.