use AnyEvent::Promises qw(deferred merge_promises);
use AnyEvent::HTTP;
use JSON qw(decode_json encode_json);
sub wget {
my ($uri) = @_;
my $d = deferred;
http_ge
ody, $headers ) = @_;
$headers->{Status} == 200
? $d->resolve( decode_json($body) )
: $d->reject('receiving data failed with status: '. $headers->{Status}
=> encode_json($data) => sub {
my ( $body, $headers ) = @_;
$headers->{Status} == 200 || $headers->{Status} == 204
? $d->resolve( $body? decode_json($body) )