diff --git a/Promise.js b/Promise.js index 52dcf18..032baf5 100644 --- a/Promise.js +++ b/Promise.js @@ -800,9 +800,9 @@ object.Constructor('ProxyPromise', Promise, { // XXX like promise but if a value can be generated sync then this will // run in sync otherwise it will fall back to being a promise... // XXX should we throw errors in sync mode??? ...option??? -var MaybePromise = -module.MaybePromise = -object.Constructor('MaybePromise', Promise, { +var SyncPromise = +module.SyncPromise = +object.Constructor('SyncPromise', Promise, { //value: undefined, //error: undefined, @@ -857,7 +857,7 @@ object.Mixin('PromiseMixin', 'soft', { interactive: InteractivePromise, cooperative: CooperativePromise, // XXX EXPEREMENTAL... - maybe: MaybePromise, + sync: SyncPromise, // XXX need error support... awaitOrRun: function(data, func){ @@ -904,6 +904,13 @@ object.Mixin('PromiseProtoMixin', 'soft', { as: ProxyPromise, iter: function(handler=undefined){ return IterablePromise(this, handler) }, + // XXX revise... + sync: function(){ + if(this instanceof SyncPromise){ + if('error' in this){ + throw this.error } + return this.value } + return this }, }) PromiseProtoMixin(Promise.prototype) diff --git a/README.md b/README.md index 6a44264..8339211 100644 --- a/README.md +++ b/README.md @@ -94,7 +94,7 @@ Library of JavaScript type extensions, types and utilities. - [Promise proxies](#promise-proxies) - [`.as(..)`](#promiseas) - [`.(..)`](#promise-proxymethod) - - [Sync/Async promise](#syncasync-promise) + - [Sync/async promise](#syncasync-promise) - [`Promise.maybe(..)` / `promise.MaybePromice(..)`](#promisemaybe--promisemaybepromice) - [`.value` / `.error`](#maybe-promisevalue--maybe-promiseerror) - [Promise utilities](#promise-utilities) @@ -2007,11 +2007,15 @@ the main `` is resolved. ### Sync/async promise -#### `Promise.maybe(..)` / `promise.MaybePromice(..)` +#### `Promise.sync(..)` / `promise.SyncPromice(..)` XXX -#### `.value` / `.error` +#### `.value` / `.error` + +XXX + +#### `.sync()` XXX diff --git a/package.json b/package.json index a6a6fc6..47ec375 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ig-types", - "version": "6.23.0", + "version": "6.24.0", "description": "Generic JavaScript types and type extensions...", "main": "main.js", "scripts": {