Most recent failure [on master](https://cirrus-ci.com/task/6073953614561280) (https://github.com/bitcoin/bitcoin/commit/567670bec5ecf9bc252e91370382be53fd81ccee):
```bash
 test  2021-06-23T11:18:18.969000Z TestFramework.node0 (DEBUG): Node stopped 
 test  2021-06-23T11:18:18.969000Z TestFramework.bitcoincli (DEBUG): Running bitcoin-cli ['-rpcwait', '-rpcwaittimeout=5', 'echo'] 
 test  2021-06-23T11:18:23.001000Z TestFramework (ERROR): Assertion failed 
                                   Traceback (most recent call last):
                                     File "/tmp/cirrus-build/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/test/functional/test_framework/test_framework.py", line 128, in main
                                       self.run_test()
                                     File "/tmp/cirrus-build/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/test/functional/interface_bitcoin_cli.py", line 257, in run_test
                                       assert_greater_than_or_equal(time.time(), start_time + 5)
                                     File "/tmp/cirrus-build/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/test/functional/test_framework/util.py", line 61, in assert_greater_than_or_equal
                                       raise AssertionError("%s < %s" % (str(thing1), str(thing2)))
                                   AssertionError: 1624447103.0015192 < 1624447103.969648
 test  2021-06-23T11:18:23.004000Z TestFramework (DEBUG): Closing down network thread 
 test  2021-06-23T11:18:23.055000Z TestFramework (INFO): Stopping nodes 
```
{
        if (conn_type == "outbound-full-relay") return "full";
        if (conn_type == "block-relay-only") return "block";
        if (conn_type == "manual" || conn_type == "feeler") return conn_type;
        if (conn_type == "addr-fetch") return "addr";
        return "";
    }
    const int64_t m_time_now{GetTimeSeconds()};
public:
    static constexpr int ID_PEERINFO = 0;
    static constexpr int ID_NETWORKINFO = 1;
    UniValue PrepareRequest(const std::string& method, const std::vector<std::string>& args) override
    {
        if (!args.empty()) {
            uint8_t n{0};
            if (ParseUInt8(args.at(0), &n)) {
                m_details_level = std::min(n, MAX_DETAIL_LEVEL);
            } else {
                throw std::runtime_error(strprintf("invalid -netinfo argument: %s\nFor more information, run: bitcoin-cli -netinfo help", args.at(0)));
            }
        }
        UniValue result(UniValue::VARR);
        result.push_back(JSONRPCRequestObj("getpeerinfo", NullUniValue, ID_PEERINFO));
        result.push_back(JSONRPCRequestObj("getnetworkinfo", NullUniValue, ID_NETWORKINFO));
        return result;
    }
    UniValue ProcessReply(const UniValue& batch_in) override