diff --git a/dask/bag/text.py b/dask/bag/text.py
--- a/dask/bag/text.py
+++ b/dask/bag/text.py
@@ -106,8 +106,10 @@ def read_text(
         )
         if files_per_partition is None:
             blocks = [
-                delayed(partial(file_to_blocks, include_path, delimiter=linedelimiter))(
-                    fil
+                delayed(list)(
+                    delayed(
+                        partial(file_to_blocks, include_path, delimiter=linedelimiter)
+                    )(fil)
                 )
                 for fil in files
             ]

diff --git a/dask/bag/tests/test_text.py b/dask/bag/tests/test_text.py
--- a/dask/bag/tests/test_text.py
+++ b/dask/bag/tests/test_text.py
@@ -84,6 +84,18 @@ def test_read_text(fmt, bs, encoding, include_path):
         assert "".join(line for block in L for line in block) == expected
 
 
+def test_read_text_unicode_no_collection():
+    data = b"abcd\xc3\xa9"
+    fn = "./data.txt"
+    with open(fn, "wb") as f:
+        f.write(b"\n".join([data, data]))
+
+    f = read_text(fn, collection=False)
+
+    result = f[0].compute()
+    assert len(result) == 2
+
+
 def test_files_per_partition():
     files3 = {"{:02}.txt".format(n): "line from {:02}" for n in range(20)}
     with filetexts(files3):

Maybe run HDFS tests based on commit message 
In https://github.com/dask/dask/pull/7329 we added the ability to trigger a CI build for our upstream tests in PRs based on the content of a commit's message (otherwise upstream tests are run on pushes to the main branch or periodically on a cron we have set up in GitHub actions). Similarly, today our [HDFS tests](https://github.com/dask/dask/blob/a620c15f3682c762baaa1e220c235e47b37d0e04/.github/workflows/ci-additional.yml#L34) are only run on pushes to the main branch. We might consider adding the same functionality to trigger HDFS CI builds in PRs based on their commit messages. 

dask/bag/tests/test_text.py::test_read_text_unicode_no_collection
dask/bag/tests/test_text.py::test_read_text[gzip-None-ascii-True] dask/bag/tests/test_text.py::test_read_text[None-None-ascii-False] dask/bag/tests/test_text.py::test_read_text[xz-None-ascii-True] dask/bag/tests/test_text.py::test_read_text[bz2-None-ascii-False] dask/bag/tests/test_text.py::test_read_text[None-None-ascii-True] dask/bag/tests/test_text.py::test_read_text[None-None-utf-8-False] dask/bag/tests/test_text.py::test_read_text[bz2-None-utf-8-True] dask/bag/tests/test_text.py::test_read_text[gzip-None-ascii-False] dask/bag/tests/test_text.py::test_read_text[gzip-None-utf-8-True] dask/bag/tests/test_text.py::test_read_text[bz2-None-utf-8-False] dask/bag/tests/test_text.py::test_files_per_partition dask/bag/tests/test_text.py::test_read_text[zip-None-utf-8-True] dask/bag/tests/test_text.py::test_errors dask/bag/tests/test_text.py::test_read_text[gzip-None-utf-8-False] dask/bag/tests/test_text.py::test_read_text[xz-None-utf-8-False] dask/bag/tests/test_text.py::test_read_text[None-None-utf-8-True] dask/bag/tests/test_text.py::test_read_text[zip-None-utf-8-False] dask/bag/tests/test_text.py::test_read_text[xz-None-ascii-False] dask/bag/tests/test_text.py::test_read_text[zip-None-ascii-True] dask/bag/tests/test_text.py::test_read_text[bz2-None-ascii-True] dask/bag/tests/test_text.py::test_read_text[None-10 dask/bag/tests/test_text.py::test_read_text[zip-None-ascii-False] dask/bag/tests/test_text.py::test_read_text[xz-None-utf-8-True] dask/bag/tests/test_text.py::test_complex_delimiter