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;
25 my $orig = $orig{$_} = $_->{on_result};
27 ($_ => sub { delete $req{$tag}; $orig->(@_); $done = 1 unless keys %req; })
29 $_->{on_result} = $on_r{$_} for @requests;
30 $class->loop_until($done);
31 $_->{on_result} = $orig{$_} for @requests;