The initial reason for this was that spinning up linux instances it occasionally fails with this error: 
ERROR: Net::SSH::HostKeyMismatch: fingerprint, However, when I ssh to the same server using the same key it works for me.
From what I understand, Amazon runs some initialization scripts (e.g. cloudinit and some puppet stuff) and one of the tasks is to configure ssh access for the 'keyname' specified.  Being that I was always able to connect right after knife errored out with the hostkey mismatch error, I figured that the cloudinit scripts were still running during the time knife detected port 22 was open and when it attempted to run remote commands to bootstrap the instance.  Other than actually running a command successfully, this was a quick remedy that I thought would help.  
In reality, the hostmismatch error still rears its head once in a while but not as frequent as before.  I just had a condition in my application to terminate the instance and try again 5 times when it errors out like this.
I agree that this should be handled differently in knife by doing a bit more than just checking that port 22 is open. Maybe in addition, it should check periodically to see if the server can run commands and timeout after a specified period.
The sleep statement was a bandaid that helped a bit but didn't eliminate the issue and should be removed pending a more permanent solution.