def receive_message(operation, message, log_message=nil, socket=nil, command=false,
read=:primary, exhaust=false)
request_id = add_message_headers(message, operation)
packed_message = message.to_s
result = ''
begin
send_message_on_socket(packed_message, socket)
result = receive(socket, request_id, exhaust)
rescue ConnectionFailure => ex
checkin(socket)
raise ex
rescue SystemStackError, NoMemoryError, SystemCallError => ex
close
raise ex
rescue Exception => ex
if defined?(IRB)
close if ex.class == IRB::Abort
end
raise ex
end
result
end