private Task <HttpResponseMessage> SendLambdaAsync(Lambda lambda, IAPIClientInterceptor interceptor) { if (lambda == null) { throw new ArgumentNullException(nameof(lambda)); } if (interceptor == null) { throw new ArgumentNullException(nameof(interceptor)); } var methodInfo = lambda.MethodInfo; var parameters = lambda.CreateParameters(APIClientParameterInfo.Make); if (!(Attribute.GetCustomAttribute(methodInfo, typeof(APIClientAttribute)) is APIClientAttribute methodAttribute)) { throw new NotSupportedException($"APICall attribute is missing from Method signature"); } var url = methodAttribute.URL; var method = new HttpMethod(methodAttribute.Method); var builder = new StringBuilder(url); BindParameters(parameters, url, builder); BindQuery(parameters, url, builder); var request = new HttpRequestMessage() { RequestUri = new Uri(builder.ToString(), default(UriKind)), Method = method, }; var body = parameters.SingleOrDefault(x => x.IsHandled); interceptor.Prepare(request, Environment, body); return(SendAsync(request)); }