Add some proper error handling to read().
Add more error handling to read().  Maximize error propagation capability to host in read().  Add some TODO markers in the unit tests.