protected async Task <T> Get <T>(string resource,
                                         string id = null,
                                         ICredentialProvider credentialProvider     = null,
                                         List <Tuple <string, object> > queryParams = null)
        {
            var message = new HttpRequestMessage()
            {
                Method     = HttpMethod.Get,
                RequestUri = MemberUrl(resource, id)
                             .AppendQueryParams(queryParams)
            };

            var response = await _clientWrapper.HandleRequest(message, credentialProvider);

            try
            {
                return(await HandleContent <T>(response.EnsureSuccessStatusCode().Content));
            }
            catch (HttpRequestException ex)
            {
                throw new TrusonaServiceException(ex, response, TryResolveRequestId(response));
            }
        }