/// <inheritdoc/>
        public async Task <HttpResponse <T> > GetAsync <T>(
            HttpRequest request,
            RequestContext requestContext,
            CancellationToken cancellationToken)
            where T : Resource, new()
        {
            PrepareRequest(request, requestContext);

            var response = await _requestExecutor.GetAsync(request.Uri, request.Headers, cancellationToken).ConfigureAwait(false);

            EnsureResponseSuccess(response);

            var data     = _serializer.Deserialize(PayloadOrEmpty(response));
            var resource = _resourceFactory.CreateNew <T>(data);

            return(CreateResourceResponse(response, resource));
        }