Particular/NServiceBus.RabbitMQ — pull request #59 by johnsimons (2014-12-03 02:05:21+00:00)
Title: Channel not disposed if WaitForConfirmsOrDie throws an exception.

I am now "disposing" of the channel in a `finally` block.

Still not sure if we need:
```c#
catch (AlreadyClosedException ex)
{
if (ex.ShutdownReason != null && ex.ShutdownReason.ReplyCode == 404)
{
var msg = ex.ShutdownReason.ReplyText;
var matches = Regex.Matches(msg, @"'([^' ]*)'");
var exchangeName = matches.Count > 0 && matches[0].Groups.Count > 1 ? Address.Parse(matches[0].Groups[1].Value) : null;
throw new QueueNotFoundException(exchangeName, "Exchange for the recipient does not exist", ex);
}

throw;
}
```
@andreasohlund what is this for?

## Regarding the use of `Abort()`
After decompiling it looks like Abort is a safest method to call instead of Close/Dispose.
Close/Dispose throws exceptions if the channel is already closed!