"often"
This makes it sound like it works correctly sometimes.
I suspect the 1-2 second deya is hurting you more than it is helping you. If you start your read to late, you may be missing the first part of the response from your device.
If the read operation would only start reading after the first part of the response was sent, then the first thing it sees is the last part of the resonse.
First "flush your buffer" by checking how many bytes are waiting, and reading tht amount. If its 0, who cares. If there bytes, toss them.
Then do your write imediately followed by the read. When you do the read, give it a sufficient amount of time to read the response.
If you post a copy of your code, someone will probably be able to give you some more ideas.
Ben