class Async::List
def each(&block)
def each(&block) return to_enum unless block_given? current = self while node = current.tail yield node # If the node has deleted itself or any subsequent node, it will no longer be the next node, so don't use it for continued traversal: if current.tail.equal?(node) current = node end end end