renamed moveNext() -> next()
supporting other then-able promises
added benchmarks