use strict; use warnings; use Data::Monad::CondVar; use AnyEvent; use Test::More; sub sleep_and_send($@) { my ($sec, @values) = @_; my $cv = AE::cv; my $t; $t = AE::timer $sec, 0, sub { $cv->send(@values); undef $t; }; $cv; } is +( cv_map_multi { my $n = 0; $n += $_ for @_; $n } sleep_and_send(.04 => 2), sleep_and_send(0 => 3), sleep_and_send(.02 => 4), )->recv, 9; done_testing;