You say that the source goes to an async script component. If this is true, then you are already controlling when rows go to the output buffer.
By default, a script component is synchronous. There is one output row for each input row. Maybe this is what you currently have setup.
If you want to use a script component as an asynchronous component, you have to do the following:
- Add a new script component
- Right-click on the component and select Show Advanced Editor...
- On the Input and Output Properties, select the Output item and change the SynchronousInputID value to None
- On the Output tab, add columns that will define the output buffer. You must define the columns because, unlike with a synchronous script, the output buffer is not automatically defined as a match to the input buffer.
When you edit the script, you can use the OutputBuffer.AddRow method to create new rows in the output buffer. Each time you call AddRow, the existing buffer content is sent out of the script component and cleared for the next row. Using your rules for skipping rows, you will validate the input buffer before adding or skipping the row.