import { Observable as ObservableT } from './index' import Observable from './observable' /** * Creates an observable that emits when the promise resolves * * {@link fromPromise} takes a `Promise` and will emit `T` when `Promise` resolves. If `Promise` rejects, then * `Observable` will {@link error()}. {@link complete()} is called after `Promise` resolves and `Observable` * emits - as such `Observable` will only ever emit one value. * * @param {Promise} promise the source promise * @returns {ObservableT} the observable that emits when the promise resolves */ export default function fromPromise(promise: Promise): ObservableT { return new Observable( ({ next, error, complete }): void => { promise.then(next, error).then(complete) } ) }