Return two iterable of headers, the first containing the new canonical headers,
        the second containing the old canonical headers

def persist_header_chain(self,
                             headers: Iterable[BlockHeader]
                             ) -> Tuple[Tuple[BlockHeader, ...], Tuple[BlockHeader, ...]]:
        """
        Return two iterable of headers, the first containing the new canonical headers,
        the second containing the old canonical headers
        """
        with self.db.atomic_batch() as db:
            return self._persist_header_chain(db, headers)