Correctly implement streaming and add spec for retry