For unix code path, it uses knife ssh.
In ssh, we have code as below, which exits from ssh code in case of error:
https://github.com/opscode/chef/blob/master/lib/chef/knife/ssh.rb#L507

We cannot do a similar exit from knife winrm, since we have introduced a new logic in knife-windows to check for winrm readiness: https://github.com/opscode/knife-windows/pull/64/files#diff-3250a6c303145f5dde5d53ee52af67c9R160