added readStreamAsync, which required refactoring and adding _adjustHeaderBasedUponText, _readData