corrected timeout logic

calls complete method to call the continuation
Moved terminator into message handler

the handler knows when the message is terminated and returns a non-null
response when it is
each send not guaranteed to result in a receive

so putting a new line on the message instead
check server timesout
unnecessary assignment
Added timeout
Soft fail on timeout

ReceiveAsync returns null
Timeouts would be logged, but not stop the process
suppress socket error on timeout