Another couple of datapoints (IRC:
https://irclog.perlgeek.de/perl6-dev/2017-10-15#i_15305041):
The `where` clause gets run even when types don't typecheck and its return
value still affects the typecheck:
<Zoffix__> m: -> *@, Int :$bin where {sleep 2; True} {say [$bin,
$bin.^name]}(:bin<x>)
<camelia> rakudo-moar ebb0521bd: OUTPUT: «[x Str]»
<Zoffix__> m: -> *@, Int :$bin where {sleep 2; False} {say [$bin,
$bin.^name]}(:bin<x>)
<camelia> rakudo-moar ebb0521bd: OUTPUT: «Type check failed in binding to
parameter '$bin'; expected Int but got Str ("x") in block <unit> at <tmp>
line 1»