That is correct, there is an array reference it carries with the object. nested under $obj-{error}->[ arrayref here with more array refs under it ]
while the function $obj->error provides the stringification at $obj->{error}->{message}
Verified it's still in scope using Data::TreeDumper which shows the address.