8 sub loop { $loop ||= Tak::Loop->new }
11 my ($class, $done) = @_;
13 my $loop = $class->loop;
14 $loop->loop_once until $_[1];
18 my ($class, @requests) = @_;
19 @requests = grep !$_->is_done, @requests;
20 return unless @requests;
21 my %req = map +("$_" => "$_"), @requests;
24 my $orig = $_->{on_result};
26 ($_ => sub { delete $req{$tag}; $orig->(@_); $done = 1 unless keys %req; })
28 my $call = sub { $class->loop_until($done) };
32 $call = sub { local $req->{on_result} = $on_r{$req}; $inner->() };