# setting up guard Mojo::IOLoop->timer( 5 => sub { $self->render(text => "ERR! Too long"); $guard++; }, ); # running request Mojo::IOLoop->delay( sub { my($delay) = @_; # no idea how long this takes $obj->get($delay->begin); }, sub { my($delay, $data) = @_; return if $guard; return $self->render(text => $data); }, );