less intrusive closure implementation
implemented undefined variables (sadly, but explainable, it is async)