Seems reasonable to me... except I don't see the point of having foo/1 and foo1/1. The author could just have easily done:
foo(bar) -> void;
foo(X) -> undefined.
without the need for the proxy function: foo(X) -> foo1(X).