def all_connected_nodes(graph, start):
    """
    Yield all downstream nodes starting at the given node.

    Parameters
    ----------
    graph : network.DiGraph
        Graph being traversed.
    start : hashable object
        Identifier of the starting node.

    Yields
    ------
    list
        A list of all nodes found when traversal starts at start.
    """
    stack = [start]
    visited = set(stack)
    yield start
    while stack:
        src = stack.pop()
        for tgt in graph[src]:
            yield tgt
            if tgt not in visited:
                visited.add(tgt)
                stack.append(tgt)
