RAKUDO_SCHEDULER_DEBUG=1 perl6-gdb-m --ll-exception -e 'while 1 { use v6.d.PREVIEW; my %c = (:0reactor_count); my $s = supply { whenever IO::Socket::Async.listen("0.0.0.0", 5000) -> $c-conn { %c{$c-conn}<bar>++; emit $c-conn; %c{$c-conn}<msgs-supplier> = Supplier.new; $c-conn.Supply.lines.tap({ %c{$c-conn}<msgs-supplier>.emit: $_ }); } }; sub start_reactor ($msgs-in) { start { react whenever $msgs-in -> $msg-in { say "before"; say QX("echo foo"); say "after"; %c<reactor_count>++; } } }; start { react whenever $s -> $c-conn { start { start_reactor(%c{$c-conn}<msgs-supplier>.Supply); } } }; sleep 1; my $c = await IO::Socket::Async.connect("0.0.0.0", 5000); await $c.print("foo\n"); sleep 1; }'
Eventually prints out (for me): Unhandled exception in code scheduled on thread 4 Too few positionals passed; expected 6 arguments but got 2 in block at SETTING::src/core/IO/Socket/Async.pm line 151 in block at SETTING::src/core/ThreadPoolScheduler.pm line 225 in block at SETTING::src/core/ThreadPoolScheduler.pm line 224 in method run-one at SETTING::src/core/ThreadPoolScheduler.pm line 224 in method dispatch:<!> at SETTING::src/core/Mu.pm line 732 in block at SETTING::src/core/ThreadPoolScheduler.pm line 258