Minor improvements

process_data_events will continue to process as long as the channel is
not closed and the inbound buffer contains messages.

process_data_events now only raise an exception on the current thread if
a consumer_callback has yet been defined.

Added an additional sanity check when building inbound messages.