code: func (nDB *NetworkDB) DeleteEntry(tname, nid, key string) error {
  	nDB.Lock()
  	oldEntry, err := nDB.getEntry(tname, nid, key)
  	if err != nil || oldEntry == nil || oldEntry.deleting {
  		nDB.Unlock()
  		return fmt.Errorf("cannot delete entry %s with network id %s and key %s "+
  			"does not exist or is already being deleted", tname, nid, key)
  	}
  
  	entry := &entry{
  		ltime:    nDB.tableClock.Increment(),
  		node:     nDB.config.NodeID,
  		value:    oldEntry.value,
  		deleting: true,
  		reapTime: nDB.config.reapEntryInterval,
  	}
  
  	nDB.createOrUpdateEntry(nid, tname, key, entry)
  	nDB.Unlock()
  
  	if err := nDB.sendTableEvent(TableEventTypeDelete, nid, tname, key, entry); err != nil {
  		return fmt.Errorf("cannot send table delete event: %v", err)
  	}
  
  	return nil
  }
docs: // DeleteEntry deletes a table entry in NetworkDB for given (network,
  // table, key) tuple and if the NetworkDB is part of the cluster
  // propagates this event to the cluster.