Newton's method has no global convergence guarantee for arbitrary functions, as you just learned.
Now, people have posted examples of where Newton's method doesn't converge, but they're all rather "unusual" functions (some being very non-smooth), so it's natural to assume they're pathological and won't happen in practice.
Your example is one where Newton just takes more iterations than expected to converge, so it's not too bad.
But here is an example of a cubic polynomial for which Newton's method won't converge!
\begin{align*}
f(x) &= -0.74 + 0.765 x + 1.1 x^2 - 3.55 x^3 \\
x_0 &= 5/9
\end{align*}
Not only that, but it's in fact a stable oscillation—small perturbations won't change the behavior.

And for bonus points, you can generate as many of these as you want!
Just let the Newton step be $$g(x) = x - f'(x)^{-1} f(x)$$ and then you're just looking for a nontrivial solution to the equation $$x_0 = g^3(x_0) = g(g(g(x_0)))$$ where a solution $x_0$ would be trivial if $g(x_0) = 0$.
Notice the equation above is just another polynomial equation (although of a
much higher order)—which means its solutions can be readily found numerically.
The only caveat is that these solutions might not necessarily be stable. I suspect you should be able to place a second-derivative condition to ensure stable solutions, but the exact equation is not obvious to me at the moment, so I'll leave it as an exercise for the reader. :-)
Mathematica code for the plot:
Manipulate[
With[{f = Evaluate[Rationalize[d + c # + b #^2 + a #^3]] &}, Plot[
f[x], {x, -0.61, 1},
PlotStyle -> {Thickness[Tiny]},
Prolog -> {Thickness[Tiny],
Line[Flatten[Map[
{{#, 0}, {#, f[#]}} &,
NestList[Compile[t, t - f[t]/f'[t]], x0, n]], 1]]}]],
{{a, -3.55}, -4, 4},
{{b, 1.1}, -2, 2},
{{c, 0.765}, -1, 1},
{{d, -0.74}, -1, 1},
{{x0, 5/9}, 0, 1},
{{n, 100}, 0, 1000, 1}]
Update:
I wrote some code to purposefully find both stable and unstable iterations:
Newton[f_] := t \[Function] t - f[t]/f'[t];
NewtonPlot[f_, xmin_, xmax_, x0_, n_, args___] :=
Plot[f[x], {x, xmin, xmax}, args,
Prolog -> {Thickness[Tiny],
Line[Flatten[Map[
{{#, 0}, {#, f[#]}} &,
NestList[Compile[t, Newton[f][t]], x0, n]], 1]]}];
FindOscillatoryNewtonSolutions[f_, n_, h_](* {Stables,Unstables} *):=
With[{step = Newton[f]},
With[{nstep = t \[Function] Nest[step, t, n]},
GroupBy[
Map[#[[1]][[2]] &,
Solve[{nstep[t] == t, Abs[step[t] - t] >= h}, t, Reals]],
t \[Function]
With[{step1hp = nstep[t + h], step1hm = nstep[t - h]}, True \[And]
Abs[N[step1hp - t]] >= Abs[N[nstep[step1hp] - t]] \[And]
Abs[N[step1hm - t]] >= Abs[N[nstep[step1hm] - t]]]]]];
With[{z = 400, xmin = -1.1, xmax = +0.65, h = 10^-3},
Manipulate[
With[{f =
t \[Function] Evaluate[Rationalize[d + c t + b t^2 + a t^3]],
n = 3, m = 8},
With[{solcategories = FindOscillatoryNewtonSolutions[f, n, h]},
If[Length[solcategories] >= 2,
Map[{Transpose@{N@SortBy[NestList[Newton[f], #1, n - 1], N]},
NewtonPlot[f, xmin, xmax, N[#1 + dx], n*m,
PlotStyle -> {Thickness[Tiny]},
ImageSize -> Scaled[0.2],
PerformanceGoal -> "Quality"]} &, {First@Lookup[solcategories, True],
First@Lookup[solcategories, False]}],
Throw["Did not manage to find both a stable and an unstable solution."]]]],
{{dx, h}, -4 h, +4 h, h/4},
{{a, -355}, -z, +z, 1}, {{b, 110}, -z, +z, 1},
{{c, 77}, -z, +z, 1}, {{d, -74}, -z, +z, 1},
SynchronousUpdating -> False]]
Notice, below, that the first point iterates stably, whereas the second one iterates unstably. (The iterations would diverge further, but I cut them off at some point.)
