+1
-1
| { | ||
| "name": "ogen", | ||
| "version": "1.0.0", | ||
| "version": "1.1.0", | ||
| "description": "An observable Async/Await. Write async code that looks synchronous.", | ||
@@ -5,0 +5,0 @@ "main": "source/ogen.js", |
+7
-1
@@ -10,3 +10,7 @@ /* eslint-disable no-use-before-define */ | ||
| const next = (iter, callbacks, prev = undefined) => { | ||
| const { onNext, onComplete } = callbacks; | ||
| const { | ||
| onNext, | ||
| onError, | ||
| onComplete | ||
| } = callbacks; | ||
| const item = iter.next(prev); | ||
@@ -23,2 +27,4 @@ const value = item.value; | ||
| setImmediate(() => next(iter, callbacks, val)); | ||
| }).catch(err => { | ||
| return onError(err); | ||
| }); | ||
@@ -25,0 +31,0 @@ } else { |
+33
-1
| const test = require('tape'); | ||
| const ogen = require('ogen'); | ||
| const ogen = require('../ogen'); | ||
@@ -79,1 +79,33 @@ test('basic observable', assert => { | ||
| }); | ||
| test('rejected promise', assert => { | ||
| const msg = 'should notify onError'; | ||
| const halt = 'should not emit more data'; | ||
| const noComplete = 'should not notify onComplete'; | ||
| const fetchSomething = () => new Promise((x, reject) => { | ||
| setTimeout(() => | ||
| reject(new Error('Could not fetch data')), 10); | ||
| }); | ||
| const generator = function* () { | ||
| const result = yield fetchSomething(); | ||
| // should not emit this | ||
| yield result + ' 2'; | ||
| }; | ||
| const observable = ogen(generator)(); | ||
| observable.subscribe(val => { | ||
| assert.fail(halt); | ||
| assert.fail(`emitted: ${ val }`); | ||
| }, | ||
| () => { | ||
| assert.pass(msg); | ||
| setTimeout(() => assert.end(), 500); | ||
| }, | ||
| () => { | ||
| assert.fail(noComplete); | ||
| }); | ||
| }); |
12384
6.87%123
35.16%