//if gen and gen2 are generators function merge_data() { try { do { $data[] = 10*gen() + 5 + 4*gen2(); ... } while( some_condition( ... ) ); } catch ( $e ) { .... } return $data; }