Use a callback in run method, add wait by default to run and make attach call only when necessary in run method