Update worker functions and add tests
on-*-reset! now captures value and return the value in a go chan