Future<String> text() async { if (_cachedText != null) return _cachedText!; if (_bodyRead) return ''; _bodyRead = true; _cachedText = await utf8.decoder.bind(raw).join(); return _cachedText!; }