use Mojolicious::Lite; any '/ioloop_weirdness' => sub { my $self = shift->render_later; my @urls = qw( yahoo.com yahoo.de yahoo.fr ); Mojo::IOLoop->delay( sub { my($delay) = @_; $self->ua->get($_ => $delay->begin) for @urls; }, sub { my($delay, @tx) = @_; $self->render(json => [ map { $_->res->dom->at('title')->text; } @tx ]); }, ); }; app->start;