use direct connection to prevent a crash with sender being garbage in onSignalEmitted