fun <R, T> executeAsyncCleaning(env: R, action: () -> T, cleanAction: (EnvWithError<R>) -> EnvWithError<R>): Either<Throwable, T>