Я бы не рекомендовал структурировать вашу программу следующим образом. Похоже, что у вас есть функции, которые генерируют исключения и используют обещания (от которых вы хотите избавиться с помощью ROP), распределенные по всей вашей программе, а затем составьте их на верхнем уровне.
Вместо этогоВы должны обернуть библиотеки, которые вы используете, чтобы избавиться от обещаний / исключений и преобразовать их в будущее как можно ближе к библиотеке проблем. Например, если вы используете обещания для сетевых вызовов HTTP, оберните сетевую библиотеку так, чтобы она возвращала фьючерсы.
Это означает, что вы можете затем изменить свои функции композиции на работу с чистыми функциями и функциями, возвращающими будущее, чтоможет быть составлен напрямую, используя map
и chain
.