Exposing SynchronousListener to the public + fixing its infinite loops issues.