Hi Stelian,
finish-output attempts to ensure that any buffered output sent to output-stream has reached its destination, and then returns.
force-output initiates the emptying of any internal buffers but does not wait for completion or acknowledgment to return.
I know. The situation that we want to avoid is CL-postgres calling read on a socket that has unflushed data -- then both the server and the client will wait forever. Thus, it is enough to call force-output, which ensures that the flushing is initiated, and the next read won't block forever.
Best, Marijn