If a thrift level protocol error occurs. For instance one makes a few changes to the thrift IDL file and a client connects using the old API an unhandled exception can be thrown from the TBinaryProtocol class. By adding a try-catch to the process() call these errors can be caught, the connection closed, and an error event emitted.
Likewise if a client closes the socket, ie. due to a timeout condition, another unhandled exception is thrown from stream.write().