class Async::List

def remove(node)

@returns [Node] Returns the node if it was removed, otherwise nil.
@raises [ArgumentError] If the node is not part of this list.

You should be careful to only remove nodes that are part of this list.

Remove the node. If it was already removed, this will raise an error.
def remove(node)
	# One downside of this interface is we don't actually check if the node is part of the list defined by `self`. This means that there is a potential for a node to be removed from a different list using this method, which in can throw off book-keeping when lists track size, etc.
	unless node.head
		raise ArgumentError, "Node is not in a list!"
	end
	
	remove!(node)
end