code: func (fc *Flow) Listen(network, address string) (ret *Dataset) {
  	fn := func(writer io.Writer, stats *pb.InstructionStat) error {
  		listener, err := net.Listen(network, address)
  		if err != nil {
  			return fmt.Errorf("Fail to listen on %s %s: %v", network, address, err)
  		}
  		conn, err := listener.Accept()
  		if err != nil {
  			return fmt.Errorf("Fail to accept on %s %s: %v", network, address, err)
  		}
  		defer conn.Close()
  
  		return util.TakeTsv(conn, -1, func(message []string) error {
  			stats.InputCounter++
  			var row []interface{}
  			for _, m := range message {
  				row = append(row, m)
  			}
  			stats.OutputCounter++
  			return util.NewRow(util.Now(), row...).WriteTo(writer)
  		})
  
  	}
  	return fc.Source(address, fn)
  }
docs: // Listen receives textual inputs via a socket.
  // Multiple parameters are separated via tab.