dispose in task dispatcher should not be re-entrant