1) It shows up in the application view of the observer. Also, if one both processes dies the other one dies too, what more supervision would I want? A Task is also not magically rerun if there is a problem.
2) Every OTP behaviour keeps the ancestor info as well, I could use proc_lib instead of spawning directly.
In this particular case it is. If I spawn a process directly (and not separately supervised) to run a function asynchronously (or just out-of-process to make the gc happy), then the ancestor is the same as the caller.
2) Every OTP behaviour keeps the ancestor info as well, I could use proc_lib instead of spawning directly.