async method needs to be passed as an argument to the 'newmethod'
wrapper because "The nested function looks up variables from the parent
scope when executed, not when defined."  See
http://stackoverflow.com/questions/12423614/local-variables-in-python-nested-functions