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»