def wrapper(*args) -> Observable: subject = AsyncSubject() def action(scheduler, state): try: result = func(*args) except Exception as ex: subject.on_error(ex) return subject.on_next(result) subject.on_completed() scheduler.schedule(action) return subject.pipe(ops.as_observable())