It takes from 5 (shortest) to almost 40 (longest) minutes for `bitcoin-cli gettxoutsetinfo` to return an _empty_ dict. I noticed this first whilst configuring the Statoshi branch of Bitcoin Core, but went back to install Bitcoin Core (git clone -b v0.11.2 https://github.com/bitcoin/bitcoin.git) to find the same results.

```
20:10 pi@raspinode:~/bin/bitcoin.orig $ bitcoin-cli gettxoutsetinfo
{
}
20:12 pi@raspinode:~/bin/bitcoin.orig $ bitcoin-cli getinfo
{
    "version" : 110200,
    "protocolversion" : 70002,
    "blocks" : 393193,
    "timeoffset" : 0,
    "connections" : 12,
    "proxy" : "",
    "difficulty" : 113354299801.47113037,
    "testnet" : false,
    "relayfee" : 0.00005000,
    "errors" : ""
}
20:17 pi@raspinode:~/bin/bitcoin.orig $
```

Raspberry Pi 2 - 1GB memory - 4 core CPU 900MHz - Blockchain on SanDisk Ultra Android microSDXC 128GB up to 80 MB/Sec Class 10

All other RPC calls through bitcoin-cli are answered promptly and correctly.
See also issue on jlopp/statoshi https://github.com/jlopp/statoshi/issues/19#issuecomment-171350739

"\nArguments:\n"
            "1. timeout (milliseconds) (int, optional, default=false)\n"
            "\nResult::\n"
            "{                           (json object)\n"
            "  \"hash\" : {       (string) The blockhash\n"
            "  \"height\" : {     (int) Block height\n"
            "}\n"
            "\nExamples\n"
            + HelpExampleCli("waitfornewblock", "1000")
            + HelpExampleRpc("waitfornewblock", "1000")
        );
    int timeout = 0;
    if (params.size() > 0)
        timeout = params[0].get_int();
    CUpdatedBlock block;
    {
        std::unique_lock<std::mutex> lock(cs_blockchange);
        block = latestblock;
        if(timeout)
            cond_blockchange.wait_for(lock, std::chrono::milliseconds(timeout), [&block]{return latestblock.height != block.height || latestblock.hash != block.hash || !IsRPCRunning(); });
        else
            cond_blockchange.wait(lock, [&block]{return latestblock.height != block.height || latestblock.hash != block.hash || !IsRPCRunning(); });
        block = latestblock;
    }
    UniValue ret(UniValue::VOBJ);
    ret.push_back(Pair("hash", block.hash.GetHex()));
    ret.push_back(Pair("height", block.height));
    return ret;
}
UniValue waitforblock(const UniValue& params, bool fHelp)