streamText fails silently because errors are streamed instead of thrown; use onError callback to log them