AHA! answering my own question
Thanks to both @travis and @cmbaxter to pointing me into good directions. I was looking at both old source code and old api docs and didn't see newer methods like repeat. The ticket for me is unfold:
scala> val s: Stream[String] = "A" #:: "B" #:: "C" #:: "D" #:: s
s: Stream[String] = Stream(A, ?)
scala> Enumerator.unfold(s)(s => Some(s.tail, s.head)) through Enumeratee.take(10) apply Iteratee.foreach(println(_))
res3: scala.concurrent.Future[play.api.libs.iteratee.Iteratee[String,Unit]] = scala.concurrent.impl.Promise$DefaultPromise@55d3e052
scala> A
B
C
D
A
B
C
D
A
B