This feels like an implementation detail of the calling method bleeding into the interior method. It may be more maintainble to have this catch in the calling method. This also allows implementing from_stream if we decide that it needs to be public.