It was possible to encounter data races when when requesting connection
callbacks on the message thread, but creating/destroying connection
objects on a background thread.
This change ensures that a message will not be processed if the
destination connection is destroyed before the message is delivered.