def next(self):
        """Return the next transaction object.

        StopIteration will be propagated from self.csvreader.next()
        """
        try:
            return self.dict_to_xn(self.csvreader.next())
        except MetadataException:
            # row was metadata; proceed to next row
            return next(self)