Reworked listen logic in Keystone.start() to fix #308