         listener.transferCount = knownTransferResults.count
         manager.connect()
         wait (for: [listener.transferExpectation], timeout: syncTimeoutInSeconds)
+
+        // If a P2P mode, wait for syncDone
+        if (WalletManagerMode.p2p_only == mode) {
+            wait (for: [walletManagerSyncDoneExpectation], timeout: syncTimeoutInSeconds)
+        }
 
         manager.disconnect()
         wait (for: [walletManagerDisconnectExpectation], timeout: 5)


    /// MARK: - BCH

    func testTransferBCH_P2P () {
        isMainnet = true
        currencyCodesNeeded = ["bch"]

        prepareAccount (knownAccountSpecification)
        prepareSystem()

        let knownTransferResults = knownTransferResultsByModeStrangely(mode: mode)

        let walletManagerDisconnectExpectation = XCTestExpectation (description: "Wallet Manager Disconnect")
        let walletManagerSyncDoneExpectation   = XCTestExpectation (description: "Wallet Manager Sync Done")
        listener.managerHandlers += [
            { (system: System, manager:WalletManager, event: WalletManagerEvent) in
                if case let .changed(_, newState) = event, case .disconnected = newState {
                    walletManagerDisconnectExpectation.fulfill()
                }
            },
            { (system: System, manager:WalletManager, event: WalletManagerEvent) in
                if case .syncEnded = event {
                    walletManagerSyncDoneExpectation.fulfill()
                }
            }
        ]

        let network: Network! = system.networks.first { "btc" == $0.currency.code && isMainnet == $0.isMainnet }
        XCTAssertNotNil (network)
