Siesta, some assembly required

The Pipeline

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};
     }
 }