     event.properties   = @addDefaults { options, username }
 
     unless mqClient
-      return console.error 'Tracker: RabbitMQ client not set'
+      console.error errMQClientNotSet
+      return callback errMQClientNotSet
 
     sendMessage = ->
       mqClient.exchange "#{exchangeName}", exchangeOpts, (exchange) ->
         unless exchange
-          return console.error "Tracker: Exchange not found to queue: #{exchangeName}"
+          err = new Error "Tracker: Exchange not found to queue: #{exchangeName}"
+          console.error err
+          return callback err
 
-        exchange.publish '', event, { type: EVENT_TYPE }
-        exchange.close()
+        exchange.publish '', event, { type: EVENT_TYPE }, (errored, err) =>
+          return callback err
 
     if mqClient.readyEmitted then sendMessage()
     else mqClient.on 'ready', -> sendMessage()


    callback()


  @track = (username, event, options = {}) ->
    return  unless KONFIG.sendEventsToSegment

    _.extend options, @properties[event.subject]


    # from Go/other systems are being sent
    analytics.flush (err, batch) ->
      console.error "flushing identify failed: #{err} @sent-hil"  if err
      callback err


  @track$ = secure (client, subject, options = {}, callback) ->
