I wouldn't want self healing code in my codebase. Especially if I am on call.
Do you want reliable software? Fail fast, design with failure in mind and keep it tested by injecting failures every now and then.
I think the Erlang approach is very good and it doesn't need esoteric approaches