Siesta::process is this:
sub process {
my $self = shift;
my %args = @_;
my $action = $args{action} || 'post';
my $mail = Siesta::Message->new( $args{mail} );
my $list = Siesta::List->load( $args{list} );
$self->log("processing $action", 1);
for my $plugin ( $list->plugins($action) ) {
# SIESTA_NON_STOP is used by 20fullsend.t to ensure
# excercising of everything. it means "run the next plugin,
# even if the last one said to stop"
return if $plugin->process($mail) && !$ENV{SIESTA_NON_STOP};
}
}