updating props to methods rather than magic variables
bringing async up to date with the promise version
making it the same as in master (promise version)