handling async the right way