> What is the reason to use the string as the buffer to send data and > Future[string] to receive data asynchronously?
Because `string` is the most common and most intuitive type of data to send over a socket. What do you propose should be the default? Raw pointers are unsafe and you yourself seem to have run into trouble with them. You need to ensure all your allocated data is not deallocated by the GC using the `GC_ref` procedure. If you don't then your application will crash.
