public void HandleCallback(IncomingMessageContext context)
        {
            if (context.CorrelationId == Guid.Empty)
                return;

            Logger.Debug("Handling callback for message {0} with correlation ID {1}", context.MessageId, context.CorrelationId);

            BusAsyncResult busAsyncResult;

            lock (MessageIdToAsyncResultLookup)
            {
                MessageIdToAsyncResultLookup.TryGetValue(context.CorrelationId, out busAsyncResult);
                MessageIdToAsyncResultLookup.Remove(context.CorrelationId);
            }

            if (busAsyncResult == null)
            {
                Logger.Debug("No callback is registered with correlation ID {0}", context.CorrelationId);
                return;
            }

            int statusCode = 0;

            if (context.IsControlMessage())
            {
                HeaderValue errorCodeHeader;

                if (context.TryGetHeaderValue(HeaderKeys.ReturnErrorCode, out errorCodeHeader))
                {
                    statusCode = Int32.Parse(errorCodeHeader.Value);
                }
            }

            Logger.Debug("Calling callback for correlation ID {0}", context.CorrelationId);
            busAsyncResult.Complete(statusCode, context.Message);
        }