The Perl Toolchain Summit 2025 Needs You: You can help 🙏 Learn more

use strict;
plan tests => 2;
my ($d);
my (@result);
# while
# - require CODE in first param
# - receive $d in first param with correct $d->iter()
# end_while
$d = Async::Defer->new();
throws_ok { $d->while() } qr/require CODE/;
$d = Async::Defer->new();
$d->while(sub{ my $i = $_[0]->iter(); push @result, $i; $i < 3 });
$d->do(sub{
my ($d) = @_;
push @result, $d->iter()*10;
$d->done();
});
$d->end_while();
@result = (); $d->run();
is_deeply \@result, [1,10,2,20,3], 'receive $d in first param with correct $d->iter()';