src/main/java/com/googlecode/objectify/impl/AsyncTransactionImpl.java
@Override
	public Response commit() {
		// Complete any enlisted operations so that the session becomes consistent. Note that some of the
		// enlisted load operations might result in further enlistment... so we have to do this in a loop
		// that protects against concurrent modification exceptions
		while (!enlisted.isEmpty()) {
			final List<Result<?>> last = enlisted;
			enlisted = new ArrayList<>();

			for (final Result<?> result: last)
				result.now();
		}

		final Response response = transaction.commit();
		afterCommit.run();
		return response;
	}
@Override
	public Response commit() {
		// Complete any enlisted operations so that the session becomes consistent. Note that some of the
		// enlisted load operations might result in further enlistment... so we have to do this in a loop
		// that protects against concurrent modification exceptions
		while (!enlisted.isEmpty()) {
			final List<Result<?>> last = enlisted;
			enlisted = new ArrayList<>();

			for (final Result<?> result: last)
				result.now();
		}

		final Response response = transaction.commit();
		afterCommit.run();
		return response;
	}
/* (non-Javadoc)
@see com.googlecode.objectify.util.cmd.TransactionWrapper#commit()