async def test_can_connect_during_backward(self):
        """client starts on main chain. client already knows about another fork, which has local height 4.
        server is on that fork but has more blocks.
        - first missing block found during *backward* phase
        - is *existing* fork
        """
        ifa = self.interface
        ifa.tip = 8
        ifa.blockchain = MockBlockchain(["00a", "01a", "02a", "03a", "04a", "05a", "06a", "07a", "08a", "09a", "10a", "11a", "12a"])
        blockchain.blockchains = {
            "00a": ifa.blockchain,
            "03b": MockBlockchain(["00a", "01a", "02a", "03b", "04b"]),
        }
        ifa.q.put_nowait({'block_height': 8, 'mock': {CRM.CATCHUP:1, 'id': '08b', 'prev_id': '07b'}})
        ifa.q.put_nowait({'block_height': 7, 'mock': {CRM.BACKWARD:1, 'id': '07b', 'prev_id': '06b'}})
        ifa.q.put_nowait({'block_height': 5, 'mock': {CRM.BACKWARD:1, 'id': '05b', 'prev_id': '04b'}})
        ifa.q.put_nowait({'block_height': 6, 'mock': {CRM.CATCHUP:1, 'id': '06b', 'prev_id': '05b'}})
        res = await ifa.sync_until(ifa.tip, next_height=6)
        self.assertEqual((CRM.CATCHUP, 7), res)
        self.assertEqual(ifa.q.qsize(), 0)
        self.assertEqual(len(blockchain.blockchains), 2)
client starts on main chain. client already knows about another fork, which has local height 4.
        server is on that fork but has more blocks.
        - first missing block found during *backward* phase
        - is *existing* fork
        
tests/test_network.py