code: def _del_tip(self, node_id):
          
          self.nodes_deleted.append(node_id)
          etp = self._edge_by_target.get(node_id)
          assert etp is not None
          source_id, target_id = self._del_edge(etp)
          assert target_id == node_id
          return source_id
docs: Assumes that there is no entry in edge_by_source[node_id] to clean up.