public async Task <NetworkNAT> WaitForNatState(int natid, int netid, NetworkResourceStatus state)
        {
            NetworkNAT nat;

            var startTime = DateTime.Now;

            while (DateTime.Now - startTime < TimeSpan.FromMilliseconds(OneStepClient.TaskTimeout))
            {
                var nats = (await GetPublicNetwork(netid)).Nats;
                nat = nats.Where(n => n.Id == natid).First();

                if (nat.Status == state)
                {
                    return(nat);
                }

                if (nat.Status == NetworkResourceStatus.error)
                {
                    throw new PublicNetworkTaskException("NAT state changed to error");
                }

                await Task.Delay(OneStepClient.PoolingInterval);
            }

            throw new TimeoutException();
        }
        public async Task <PublicNetwork> WaitForNetState(int netid, NetworkResourceStatus state)
        {
            PublicNetwork net;

            var startTime = DateTime.Now;

            while (DateTime.Now - startTime < TimeSpan.FromMilliseconds(OneStepClient.TaskTimeout))
            {
                net = await GetPublicNetwork(netid);

                if (net.Status == state)
                {
                    return(net);
                }

                if (net.Status == NetworkResourceStatus.error)
                {
                    throw new PublicNetworkTaskException("Network state changed to error");
                }

                await Task.Delay(OneStepClient.PoolingInterval);
            }

            throw new TimeoutException();
        }