-opaque callback()
-spec free(callback()) -> ok.
-spec func_ptr(callback()) -> reference().
-spec new(atom(), [atom()], function()) -> {ok, callback()} | {error, term()}.