Параллельные запросы в Mojolicious приложении

У меня есть приложение Perl, которое, например, параллельный поиск в Google:

use Mojo::UserAgent;
use Mojo::IOLoop;

my $ua = Mojo::UserAgent->new();

my $delay = Mojo::IOLoop->delay(sub { say 'DONE1 (should be before render)'; });

foreach my $i ( 1 .. 10 ) {
    $delay->begin();

    $ua->get("http://www.google.ru/search?q=$i" => sub {
        say $i;
        $delay->end();
    });
}

$delay->wait() unless $delay->ioloop->is_running();

say 'DONE2 (should be before render)';
say 'Found! (render)';

И это'с отлично работает:

6
1
7
10
3
9
2
5
8
4
DONE1 (should be before render)
DONE2 (should be before render)
Found! (render)

Когда я использую этот код в приложении Mojolicious в контроллере:

package MyApp::Google;

use Mojo::Base 'Mojolicious::Controller';

sub search {

    my $self = shift;

    my $delay = Mojo::IOLoop->delay(sub { $self->app->log->debug('DONE1 (should be before render)') });

    foreach my $i ( 1 .. 10 ) {
        $delay->begin();

        $self->ua->get("http://www.google.ru/search?q=$i" => sub {
            $self->app->log->debug($i);
            $delay->end();
        });
    }

    $delay->wait() unless $delay->ioloop->is_running();

    $self->app->log->debug('DONE2 (should be before render)');

    return $self->render_text('Found!');

}

Это идет не так:

[Wed May 15 11:07:32 2013] [debug] Routing to controller "MyApp::Google" and action "search".
[Wed May 15 11:07:32 2013] [debug] DONE2 (should be before render)
[Wed May 15 11:07:32 2013] [debug] 200 OK (0.005689s, 175.778/s).
[Wed May 15 11:07:32 2013] [debug] 1
[Wed May 15 11:07:32 2013] [debug] 8
[Wed May 15 11:07:32 2013] [debug] 10
[Wed May 15 11:07:32 2013] [debug] 5
[Wed May 15 11:07:32 2013] [debug] 3
[Wed May 15 11:07:32 2013] [debug] 9
[Wed May 15 11:07:32 2013] [debug] 6
[Wed May 15 11:07:32 2013] [debug] 2
[Wed May 15 11:07:32 2013] [debug] 4
[Wed May 15 11:07:32 2013] [debug] 7
[Wed May 15 11:07:32 2013] [debug] DONE1 (should be before render)

полагаю, что так$delay->wait() не ждет, Почему это происходит?

Ответы на вопрос(1)

Ваш ответ на вопрос