Improve start level detection

The current code does not check that the start level is not already reached when the listener is registered. So, it is possible to wait for something that will never happen as we're already in the right start level.

This pull request add a couple of check to avoid this situation.