public async Task <TResult> AsyncWithReturn <TResult>(IInvocation invocation)
        {
            //TODO: Handle return data deserialization.
            IHttpClientRequestContext context = RequestContextFactory.CreateContext(new CastleCoreInvocationCallContextAdapter(invocation),
                                                                                    new CastleCoreInvocationParametersContextAdapter(invocation));

            //If it has no body we don't need to provide or produce serializers for it.
            if (!context.BodyContext.HasBody)
            {
                return(await ProxyClient.Send <TResult>(context, DeserializerFactory));
            }

            //We need to look at the request to determine which serializer strategy should be used.
            IRequestSerializationStrategy serializer = SerializerFactory.SerializerFor(context.BodyContext.ContentAttributeType);

            //Because we don't need to get any returned information we can just send it
            return(await ProxyClient.Send <TResult>(context, serializer, DeserializerFactory).ConfigureAwait(false));
        }