After having this done a couple of times in different projects I decided to make this quick helper method that creates a monitor, attaches it to the desired process and fires a fun when the process goes down.
So makes it easy as pie to attach a cleanup() function to a process:
spawn(fn -> OnCrash.call(fn -> cleanup() end) do_the_work() end)
That’s really all there is to it. Ah and if you’re curious about the exit reason you can have that as well:
spawn(fn -> OnCrash.call(fn reason -> cleanup(reason) end) do_the_work() end)
Make a comment if this is helpful for you as well!