in reply to Re^3: use bytes vs packed data
in thread use bytes vs packed data

I'm not explicitly decoding anything in my code -- I just call Net::Async::FastCGI::Request->read_stdin. However, reading through that I see that THAT code is explicitly calling a UTF8 decode (it has a default encoding set to UTF8).

So it looks like the correct solution is to explicitly set the default encoding to undef on the FastCGI object. Thanks all for the clues to get here ... this was not at all obvious to me.