protected void PropageteRequestToWorkers(RestRequest request, Queue queue, Worker worker, Worker coworker)
        {
            var           requestForMaster = request.AddParameter("Cooperator", coworker.Address);
            IRestResponse response;

            if (WorkerQueries.IsWorkerAlive(DBConnection, worker.Id))
            {
                response = PropagateRequest(requestForMaster, worker);
                if (response.ResponseStatus == ResponseStatus.TimedOut ||
                    response.ResponseStatus == ResponseStatus.Error)
                {
                    response = PropagateRequest(request, coworker);
                    QueuesQueries.swapWorkers(DBConnection, queue);
                }
            }
            else
            {
                response = PropagateRequest(request, coworker);
                QueuesQueries.swapWorkers(DBConnection, queue);
            }
            if (response.StatusCode != HttpStatusCode.OK)
            {
                throw new BadRequestException();
            }
        }
        protected T PropageteRequestToWorkers <T>(RestRequest request, ICollection collection, Worker worker, Worker coworker) where T : new()
        {
            IRestResponse <T> response;

            if (WorkerQueries.IsWorkerAlive(DBConnection, worker.Id))
            {
                response = PropagateRequest <T>(request, worker);
                if (response.ResponseStatus == ResponseStatus.TimedOut ||
                    response.ResponseStatus == ResponseStatus.Error)
                {
                    response = PropagateRequest <T>(request, coworker);
                    swapWorkers(collection);
                }
            }
            else
            {
                response = PropagateRequest <T>(request, coworker);
                swapWorkers(collection);
            }
            if (response.StatusCode != HttpStatusCode.OK)
            {
                throw new BadRequestException();
            }

            return(response.Data);
        }