sub Mojo::IOLoop::Delay::cb { my ($self, $cb) = @_; my $end = $self->begin(0); return sub { $end->( $cb->(@_) ) }; } for my $i (1 .. 10) { ## my $end = $delay->begin; ## Mojo::IOLoop->timer($i => sub { Mojo::IOLoop->timer($i => $delay->cb(sub { say 10 - $i; ## $end->(); ## }); })); }