also use a context for the rollback, which is a bit cleaner since it only results in one 'defer', rather than N from the loop
also use a context for the rollback, which is a bit cleaner since it only results in one 'defer', rather than N from the loop