Yeah, this part was interesting, first of all I haven't understood why we are assigning self.connection right here, if we are doing it at the same time in `on_connect`.

Second, yes, from this point of view it looks like we can work with self.connection in exception handler when it does not exist (if first connection failed), but real testing shows, that if we can't connect to rabbitmq some other error handlers will appear (somewhere in pika code, which are trying to reconnect each 2 seconds). So in my real example this code worked, because it can be reachable only if something is wrong when connection already established, so `self.connection is not None`.

Unfortunetely I will not have much time today to take a look, but please try to reproduce this possible issue: if I'm not mistaken, yesterday I saw that my patch doubled the connection to rabbitmq server. Also, according to pika inline docs,  pika should not warn about ioloop if we provide a `stop_ioloop_on_close` flag to Tornado connection, but even with this flag provided I see the warning.