The filehandle isn't going out of scope. If you look at the
code snippet, you'll see that threadA() enqueue()'s the fileno
to threadB...and Thread::Queue::Duplex::enqueue() is a blocking
operation until threadB respond()s...which it doesn't do until it has
dequeue()'d and reconstituted the file handle.