Below is a dialogue between software developers, the first one used ChatGPT in his solution of code task and makes a comment,   the second one gives him reply on his solution. Write a reply that appropriately answers the comment.

### Comment:
follow this  as well for the conversation regarding ack.### Reply:
good work on the spec so far, there is a good amount of information on how the backpressure and writing works.small note about the ack message, as you described above i get the impression youre sending the available buffer each time you ack. remember that this is a concurrent system. if you for example sent  bytes and  bytes quickly. when the receiving side processed the first  bytes and acked the  available space. the sender could immediately send another  bytes. at this point wed have  bytes in flight, well exceeding the available buffer. very likely resulting in an error.i think we should only ack the number of bytes processed and not the number of bytes available. on the sending side we keep a count of available bytes we can send. we subtract after writing and add after receiving the acks. addition and subtraction here is commutative and atomic so we cant butcher the value. overwriting this value concurrently will run into consistency problems.the spec is also light on details for how the error and close messages will work. but also needs more details on how the messages are structured as well. how does an error message look? what details are included in it? will it have an code and message? same for the close message.if we consider each stream as a separate state machine, how do the state transitions work? the sending and receiving streams function independently right, how does that work?we dont need to go into full implementation detail, but we do need enough of it described so that anyone coming to this cold can understand enough of the structure to start working on it.