class X::Proc::Async::BindOrUse does X::Proc::Async {}

In general, it occurs when there's some mistake in the direction the stream flows, for instance:

my $p = Proc::Async.new("ls", :w);
my $h = "ls.out".IO.open(:w);
$p.bind-stdin($h);
# Fails with OUTPUT: «Cannot both bind stdin to a handle and also use :w␤»

In this case, stdin is already bound and cannot be used again; one of them should flow :out and the other one :w to work correctly.