export class Observable { constructor(private promise: Promise) {} toPromise() { return this.promise; } pipe(callback: (value: T) => S | Promise): Observable { return new Observable(this.promise.then(callback)); } } export function from(promise: Promise) { return new Observable(promise); } export function of(value: T) { return new Observable(Promise.resolve(value)); } export function mergeMap(callback: (value: T) => Observable) { return (value: T) => callback(value).toPromise(); } export function map(callback: any) { return callback; }