Allow specifying the connect greeting timeout length, ensure that any connect errors are in place before releasing the connect waiter, add unit test to ensure it works properly.