New NpgsqlSyncStream replaces BufferedStream - for one it allows writes when there is still some data in read buffer. Second feature is it handles synchronization between notification thread and main thread - only one of them is actually allowed to read data from stream.