Subscription to a Supply
class Tap {}
A Tap is a subscription to a Supply.
my $s = Supplier.new;
my $tap = $s.Supply.on-close({ say "Tap closed" }).tap(
-> $v { say "the value is $v" },
done => { say "Supply is done" },
quit => -> $ex { say "Supply finished with error $ex" },
);
# later
$tap.close;
method close(Tap:D:)
Closes the tap.