Why does my JavaScript mutate function occasionally return undefined