Hello.
BadWaitingForInitialData is not really an "error", in the sense that the server is allowed to return it when the data is not available at the moment. If this happens, the application code must deal with it somehow - for example, repeat the Read after some time.
There are multiple factors that can influence whether the error appears or not. For example, a "first" Read of a specific item may cause BadWaitingForInitialData, because the server cannot realistically give the data at the moment, but a subsequent Read some moments later will succeed. Also, When you Subscribe to an item, the server will start watching the item for changes, and can use the values obtained for the subscription when doing the Read, preventing the error in some cases. So a workaround might be to subscribe to the item, if you can do it upfront.
One more reason for it can be that the default parameters for Read (in QuickOPC) specify maximumAge = 1 second. This means that the server is not *required* to actually perform a read from the device, if it has a reasonably fresh value. I can hypothesize that it can also return BadWaitingForInitialData. You can try enforcing the Read from the Device by using a code similar to the following:
string CData = Client.Read(new UAReadArguments(InfoServer.Text, InfoNodeId.Text, UAReadParameters.FromDevice));
Best regards