in lib/Search/Elasticsearch/Cxn/Mojo.pm [34:87]
sub perform_request {
#===================================
my ( $self, $params ) = @_;
my $uri = $self->build_uri($params) . '';
my $method = $params->{method};
my %headers = ( %{ $self->default_headers } );
my @args = ( $method, $uri, \%headers );
my $data = $params->{data};
if ( defined $data ) {
$headers{'Content-Type'} = $params->{mime_type};
$headers{'Content-Encoding'} = $params->{encoding}
if $params->{encoding};
push @args, $data;
}
my $handle = $self->handle;
$handle->connect_timeout( $self->connect_timeout );
$handle->request_timeout( $params->{timeout} || $self->request_timeout );
my $tx = $handle->build_tx(@args);
my $deferred = deferred;
$tx = $handle->start(
$tx,
sub {
my ( $ua, $tx ) = @_;
my $res = $tx->res;
my $error;
if ( $error = $res->error ) {
$error = $error->{message}
if ref $error eq 'HASH';
}
my $headers = $res->headers->to_hash;
$headers->{ lc($_) } = delete $headers->{$_} for keys %{$headers};
try {
my ( $code, $response ) = $self->process_response(
$params, # request
( $res->code || 500 ), # status
$error, # reason
$res->body, # content
$headers, # headers
);
$deferred->resolve( $code, $response );
}
catch {
$deferred->reject($_);
};
}
);
$deferred->promise;
}