Why go via iterator at all? Just have an inner tailrec method that builds the list then reverses it at the end.