pub async fn exec( step_types: Vec<StepType>, input_receiver: Option<Receiver<Context>>, output_sender: Option<Sender<Context>> ) -> Result<()>