in lib/Search/Elasticsearch/Cxn/AEHTTP.pm [43:86]
sub perform_request {
#===================================
my ( $self, $params ) = @_;
my $uri = $self->build_uri($params);
my $method = $params->{method};
my %headers = ( %{ $self->default_headers } );
my $data = $params->{data};
if ( defined $data ) {
$headers{'Content-Type'} = $params->{mime_type};
$headers{'Content-Encoding'} = $params->{encoding}
if $params->{encoding};
}
my $deferred = deferred;
http_request(
$method => $uri,
headers => \%headers,
timeout => $params->{timeout} || $self->request_timeout,
body => $data,
persistent => 0,
session => $self->_pid,
( %{ $self->handle_args } ),
( $self->is_https ? ( tls_ctx => $self->_tls_ctx ) : () ),
sub {
my ( $body, $headers ) = @_;
try {
my ( $code, $response ) = $self->process_response(
$params, # request
delete $headers->{Status}, # code
delete $headers->{Reason}, # msg
$body, # body
$headers # headers
);
$deferred->resolve( $code, $response );
}
catch {
$deferred->reject($_);
}
}
);
$deferred->promise;
}