
The recursive calls into `read` caused unnecessary slowness in the connection phase. The actual first row should only be read when the data is requested. This can possibly solve the false timeout errors caused by slow sending of the first row of data.