import { Observable } from '../core/Observable' type Unwrap = T extends Promise ? R : T export const defer = (fn: () => T) => { return new Observable>((observer) => { Promise.resolve(fn()).then( (result) => { observer.next(result as Unwrap) observer.complete() }, (reason) => { observer.error(reason) } ) }) }