An unserialize would allow the __destruct to run when the unserialized value goes out of scope.
\LogicException
public function __wakeup() : void { throw new \LogicException('FnStream should never be unserialized'); }