My theory: if you can easily swap local-procedure-calls with remote-procedure-calls, then it's a well-designed system, monolith or not.
but you can't. Once you go RPC you hit the CAP theorem and need to deal with the reality of running a distributed system. Erlang is the only mainstream-ish production ready language I know of that attempts to solve this. And it is still very much caveat emptor. This is also where you might also bring up nondeterministic latency characteristics.