you should exit after callback finishes running