Timeout is reset when SendProgress is raised, cancelling turns off both timers
Major performance boost on large messages in ClientRequest.ReadNextRequest

Use a BinaryStream instead of string concatenation