Q:

amqplib, checkQueue() crashing my app when error hit

I am writing a service injestor in express, to take request and pass them onto rabbit MQ. 
I can't seem to get around the checkQueue() errors gracefully. everytime i hit them, my whole app crashes out with this error. 
events.js:141
  throw er; // Unhandled 'error' event
  ^

Error: Channel closed by server: 404 (NOT-FOUND) with message "NOT_FOUND - no queue 'asdfasdfb' in vhost '/'"
  at Channel.C.accept (/app/node_modules/amqplib/lib/channel.js:406:17)
  at Connection.mainAccept [as accept] (/app/node_modules/amqplib/lib/connection.js:63:33)
  at Socket.go (/app/node_modules/amqplib/lib/connection.js:476:48)
  at emitNone (events.js:67:13)
  at Socket.emit (events.js:166:7)
  at emitReadable_ (_stream_readable.js:411:10)
  at emitReadable (_stream_readable.js:405:7)
  at readableAddChunk (_stream_readable.js:157:11)
  at Socket.Readable.push (_stream_readable.js:110:10)
  at TCP.onread (net.js:523:20)

This is the bit of AMQP code that is giving me Grief
.post(function(req, res) {
var promise =  new Promise(function(resolve, reject){

  var queue = req.body.queue;
  if ( typeof(queue) == 'undefined' || queue.length == 0 ) return reject("No Queue Specified");

  // need to add VALID JSON CHECK
  var message = req.body.message;
  if ( typeof(message) == 'undefined' || message.length == 0 ) reject("No Message Specified");

  // select the Awknoledgement of the queue.
  var noAck = req.body.ack || true;

  // select the durabiltiy of the queue. Custing issues in the below if different hten when created.
  var durableOpt = req.body.durable || false;

  var assertOpt = {durable: durableOpt};

  var sendOptions = {
    noAck: noAck,
    contentType: 'application/json' };

  amqp.connect( process.env.QUEUE_HOST , function(err, conn) {

    if (err) return reject(err);

    conn.createChannel(function(err, ch) {
      if (err) return reject(err);

      var check = new Promise(function(resolve, reject){
        ch.checkQueue(queue, function(err,ok){
          if (err != null){
            return reject(err);
          } else {
            return resolve(true);
          }
        })
      })

      var assert = new Promise(function(resolve, reject){
        ch.assertQueue( queue , assertOpt, function(err,ok){
          if (err != null){
            return reject(err);
          } else {
            return resolve(true);
          }
        })
      })

      Promise.all( [ check , assert ] ).then(function( values ){

        for (var i = 0; i < values.length; i++) {
          if (values[i] !== true){
            reject(values[i])
          }
        }

        if( ch.sendToQueue(queue, new Buffer( JSON.stringify( message ) ) , sendOptions) == true){
          return resolve('message added');
        }

      }) // end Promise.all
    }) // end conn.createChannel
  }) // end amqp.connect
}) // end of promise.

promise.then(
function(response){
  res.status(200).json(response);
},
function( error ){
  res.status(400).json(error);
})
})

If i ever hit that error in checkQueue, or of i actually have errors in AssertQueue. It always crashes out with the error described above. Channel always closes, and get an events.js:141 error. is there any way to keep errors in calls from killing my channel? or do i need to reconnect it up on the fly when errors occur? 

A:

I found out what was causing the problem... conn was throwing an error that i wasn't catching 'properly' I tried a standard try/catch but it didn't like that either. 
After digging through the docs for a while i found it under "events" i guess that makes sense, but it would be nice to have labeled error handling. 
conn.on('error', function(handle){
  reject(handle);
})

