factored out _slurp_utf8 to catch warnings and hide internals