I watched a lot of Kevlin Henney videos on YouTube, and though I can't find the exact video... the point he made that when you add threading, you change the laws of physics of programming, really stuck with me. Causality goes out the window, and that's why you should refactor to immutability as much as possible.