callbacks are aborted when some sub-callback changes the state