Bug:Fix file validation issue
[vnfsdk/refrepo.git] / vnfmarket / src / main / webapp / vnfmarket / node_modules / q / CHANGES.md
1
2 ## 1.4.1
3
4  - Address an issue that prevented Q from being used as a `<script>` for
5    Firefox add-ons. Q can now be used in any environment that provides `window`
6    or `self` globals, favoring `window` since add-ons have an an immutable
7    `self` that is distinct from `window`.
8
9 ## 1.4.0
10
11  - Add `noConflict` support for use in `<script>` (@jahnjw).
12
13 ## 1.3.0
14
15  - Add tracking for unhandled and handled rejections in Node.js (@benjamingr).
16
17 ## 1.2.1
18
19  - Fix Node.js environment detection for modern Browserify (@kahnjw).
20
21 ## 1.2.0
22
23  - Added Q.any(promisesArray) method (@vergara).
24    Returns a promise fulfilled with the value of the first resolved promise in
25    promisesArray. If all promises in promisesArray are rejected, it returns
26    a rejected promise.
27
28 ## 1.1.2
29
30  - Removed extraneous files from the npm package by using the "files"
31    whitelist in package.json instead of the .npmignore blacklist.
32    (@anton-rudeshko)
33
34 ## 1.1.1
35
36  - Fix a pair of regressions in bootstrapping, one which precluded
37    WebWorker support, and another that precluded support in
38    ``<script>`` usage outright. #607
39
40 ## 1.1.0
41
42  - Adds support for enabling long stack traces in node.js by setting
43    environment variable `Q_DEBUG=1`.
44  - Introduces the `tap` method to promises, which will see a value
45    pass through without alteration.
46  - Use instanceof to recognize own promise instances as opposed to
47    thenables.
48  - Construct timeout errors with `code === ETIMEDOUT` (Kornel Lesiński)
49  - More descriminant CommonJS module environment detection.
50  - Dropped continuous integration for Node.js 0.6 and 0.8 because of
51    changes to npm that preclude the use of new `^` version predicate
52    operator in any transitive dependency.
53  - Users can now override `Q.nextTick`.
54
55 ## 1.0.1
56
57  - Adds support for `Q.Promise`, which implements common usage of the
58    ES6 `Promise` constructor and its methods. `Promise` does not have
59    a valid promise constructor and a proper implementation awaits
60    version 2 of Q.
61  - Removes the console stopgap for a promise inspector. This no longer
62    works with any degree of reliability.
63  - Fixes support for content security policies that forbid eval. Now
64    using the `StopIteration` global to distinguish SpiderMonkey
65    generators from ES6 generators, assuming that they will never
66    coexist.
67
68 ## 1.0.0
69
70 :cake: This is all but a re-release of version 0.9, which has settled
71 into a gentle maintenance mode and rightly deserves an official 1.0.
72 An ambitious 2.0 release is already around the corner, but 0.9/1.0
73 have been distributed far and wide and demand long term support.
74
75  - Q will now attempt to post a debug message in browsers regardless
76    of whether window.Touch is defined. Chrome at least now has this
77    property regardless of whether touch is supported by the underlying
78    hardware.
79  - Remove deprecation warning from `promise.valueOf`. The function is
80    called by the browser in various ways so there is no way to
81    distinguish usage that should be migrated from usage that cannot be
82    altered.
83
84 ## 0.9.7
85
86  - :warning: `q.min.js` is no longer checked-in.  It is however still
87    created by Grunt and NPM.
88  - Fixes a bug that inhibited `Q.async` with implementations of the new
89    ES6 generators.
90  - Fixes a bug with `nextTick` affecting Safari 6.0.5 the first time a
91    page loads when an `iframe` is involved.
92  - Introduces `passByCopy`, `join`, and `race`.
93  - Shows stack traces or error messages on the console, instead of
94    `Error` objects.
95  - Elimintates wrapper methods for improved performance.
96  - `Q.all` now propagates progress notifications of the form you might
97    expect of ES6 iterations, `{value, index}` where the `value` is the
98    progress notification from the promise at `index`.
99
100 ## 0.9.6
101
102  - Fixes a bug in recognizing the difference between compatible Q
103    promises, and Q promises from before the implementation of "inspect".
104    The latter are now coerced.
105  - Fixes an infinite asynchronous coercion cycle introduced by former
106    solution, in two independently sufficient ways.  1.) All promises
107    returned by makePromise now implement "inspect", albeit a default
108    that reports that the promise has an "unknown" state.  2.) The
109    implementation of "then/when" is now in "then" instead of "when", so
110    that the responsibility to "coerce" the given promise rests solely in
111    the "when" method and the "then" method may assume that "this" is a
112    promise of the right type.
113  - Refactors `nextTick` to use an unrolled microtask within Q regardless
114    of how new ticks a requested. #316 @rkatic
115
116 ## 0.9.5
117
118  - Introduces `inspect` for getting the state of a promise as
119    `{state: "fulfilled" | "rejected" | "pending", value | reason}`.
120  - Introduces `allSettled` which produces an array of promises states
121    for the input promises once they have all "settled".  This is in
122    accordance with a discussion on Promises/A+ that "settled" refers to
123    a promise that is "fulfilled" or "rejected".  "resolved" refers to a
124    deferred promise that has been "resolved" to another promise,
125    "sealing its fate" to the fate of the successor promise.
126  - Long stack traces are now off by default.  Set `Q.longStackSupport`
127    to true to enable long stack traces.
128  - Long stack traces can now follow the entire asynchronous history of a
129    promise, not just a single jump.
130  - Introduces `spawn` for an immediately invoked asychronous generator.
131    @jlongster
132  - Support for *experimental* synonyms `mapply`, `mcall`, `nmapply`,
133    `nmcall` for method invocation.
134
135 ## 0.9.4
136
137  - `isPromise` and `isPromiseAlike` now always returns a boolean
138    (even for falsy values). #284 @lfac-pt
139  - Support for ES6 Generators in `async` #288 @andywingo
140  - Clear duplicate promise rejections from dispatch methods #238 @SLaks
141  - Unhandled rejection API #296 @domenic
142    `stopUnhandledRejectionTracking`, `getUnhandledReasons`,
143    `resetUnhandledRejections`.
144
145 ## 0.9.3
146
147  - Add the ability to give `Q.timeout`'s errors a custom error message. #270
148    @jgrenon
149  - Fix Q's call-stack busting behavior in Node.js 0.10, by switching from
150    `process.nextTick` to `setImmediate`. #254 #259
151  - Fix Q's behavior when used with the Mocha test runner in the browser, since
152    Mocha introduces a fake `process` global without a `nextTick` property. #267
153  - Fix some, but not all, cases wherein Q would give false positives in its
154    unhandled rejection detection (#252). A fix for other cases (#238) is
155    hopefully coming soon.
156  - Made `Q.promise` throw early if given a non-function.
157
158 ## 0.9.2
159
160  - Pass through progress notifications when using `timeout`. #229 @omares
161  - Pass through progress notifications when using `delay`.
162  - Fix `nbind` to actually bind the `thisArg`. #232 @davidpadbury
163
164 ## 0.9.1
165
166  - Made the AMD detection compatible with the RequireJS optimizer's `namespace`
167    option. #225 @terinjokes
168  - Fix side effects from `valueOf`, and thus from `isFulfilled`, `isRejected`,
169    and `isPending`. #226 @benjamn
170
171 ## 0.9.0
172
173 This release removes many layers of deprecated methods and brings Q closer to
174 alignment with Mark Miller’s TC39 [strawman][] for concurrency. At the same
175 time, it fixes many bugs and adds a few features around error handling. Finally,
176 it comes with an updated and comprehensive [API Reference][].
177
178 [strawman]: http://wiki.ecmascript.org/doku.php?id=strawman:concurrency
179 [API Reference]: https://github.com/kriskowal/q/wiki/API-Reference
180
181 ### API Cleanup
182
183 The following deprecated or undocumented methods have been removed.
184 Their replacements are listed here:
185
186 <table>
187    <thead>
188       <tr>
189          <th>0.8.x method</th>
190          <th>0.9 replacement</th>
191       </tr>
192    </thead>
193    <tbody>
194       <tr>
195          <td><code>Q.ref</code></td>
196          <td><code>Q</code></td>
197       </tr>
198       <tr>
199          <td><code>call</code>, <code>apply</code>, <code>bind</code> (*)</td>
200          <td><code>fcall</code>/<code>invoke</code>, <code>fapply</code>/<code>post</code>, <code>fbind</code></td>
201       </tr>
202       <tr>
203          <td><code>ncall</code>, <code>napply</code> (*)</td>
204          <td><code>nfcall</code>/<code>ninvoke</code>, <code>nfapply</code>/<code>npost</code></td>
205       </tr>
206       <tr>
207          <td><code>end</code></td>
208          <td><code>done</code></td>
209       </tr>
210       <tr>
211          <td><code>put</code></td>
212          <td><code>set</code></td>
213       </tr>
214       <tr>
215          <td><code>node</code></td>
216          <td><code>nbind</code></td>
217       </tr>
218       <tr>
219          <td><code>nend</code></td>
220          <td><code>nodeify</code></td>
221       </tr>
222       <tr>
223          <td><code>isResolved</code></td>
224          <td><code>isPending</code></td>
225       </tr>
226       <tr>
227          <td><code>deferred.node</code></td>
228          <td><code>deferred.makeNodeResolver</code></td>
229       </tr>
230       <tr>
231          <td><code>Method</code>, <code>sender</code></td>
232          <td><code>dispatcher</code></td>
233       </tr>
234       <tr>
235          <td><code>send</code></td>
236          <td><code>dispatch</code></td>
237       </tr>
238       <tr>
239          <td><code>view</code>, <code>viewInfo</code></td>
240          <td>(none)</td>
241       </tr>
242    </tbody>
243 </table>
244
245
246 (*) Use of ``thisp`` is discouraged. For calling methods, use ``post`` or
247 ``invoke``.
248
249 ### Alignment with the Concurrency Strawman
250
251 -   Q now exports a `Q(value)` function, an alias for `resolve`.
252     `Q.call`, `Q.apply`, and `Q.bind` were removed to make room for the
253     same methods on the function prototype.
254 -   `invoke` has been aliased to `send` in all its forms.
255 -   `post` with no method name acts like `fapply`.
256
257 ### Error Handling
258
259 -   Long stack traces can be turned off by setting `Q.stackJumpLimit` to zero.
260     In the future, this property will be used to fine tune how many stack jumps
261     are retained in long stack traces; for now, anything nonzero is treated as
262     one (since Q only tracks one stack jump at the moment, see #144). #168
263 -   In Node.js, if there are unhandled rejections when the process exits, they
264     are output to the console. #115
265
266 ### Other
267
268 -   `delete` and `set` (née `put`) no longer have a fulfillment value.
269 -   Q promises are no longer frozen, which
270     [helps with performance](http://code.google.com/p/v8/issues/detail?id=1858).
271 -   `thenReject` is now included, as a counterpart to `thenResolve`.
272 -   The included browser `nextTick` shim is now faster. #195 @rkatic.
273
274 ### Bug Fixes
275
276 -   Q now works in Internet Explorer 10. #186 @ForbesLindesay
277 -   `fbind` no longer hard-binds the returned function's `this` to `undefined`.
278     #202
279 -   `Q.reject` no longer leaks memory. #148
280 -   `npost` with no arguments now works. #207
281 -   `allResolved` now works with non-Q promises ("thenables"). #179
282 -   `keys` behavior is now correct even in browsers without native
283     `Object.keys`. #192 @rkatic
284 -   `isRejected` and the `exception` property now work correctly if the
285     rejection reason is falsy. #198
286
287 ### Internals and Advanced
288
289 -   The internal interface for a promise now uses
290     `dispatchPromise(resolve, op, operands)` instead of `sendPromise(op,
291     resolve, ...operands)`, which reduces the cases where Q needs to do
292     argument slicing.
293 -   The internal protocol uses different operands. "put" is now "set".
294     "del" is now "delete". "view" and "viewInfo" have been removed.
295 -   `Q.fulfill` has been added. It is distinct from `Q.resolve` in that
296     it does not pass promises through, nor coerces promises from other
297     systems. The promise becomes the fulfillment value. This is only
298     recommended for use when trying to fulfill a promise with an object that has
299     a `then` function that is at the same time not a promise.
300
301 ## 0.8.12
302 - Treat foreign promises as unresolved in `Q.isFulfilled`; this lets `Q.all`
303   work on arrays containing foreign promises. #154
304 - Fix minor incompliances with the [Promises/A+ spec][] and [test suite][]. #157
305   #158
306
307 [Promises/A+ spec]: http://promises-aplus.github.com/promises-spec/
308 [test suite]: https://github.com/promises-aplus/promises-tests
309
310 ## 0.8.11
311
312  - Added ``nfcall``, ``nfapply``, and ``nfbind`` as ``thisp``-less versions of
313    ``ncall``, ``napply``, and ``nbind``. The latter are now deprecated. #142
314  - Long stack traces no longer cause linearly-growing memory usage when chaining
315    promises together. #111
316  - Inspecting ``error.stack`` in a rejection handler will now give a long stack
317    trace. #103
318  - Fixed ``Q.timeout`` to clear its timeout handle when the promise is rejected;
319    previously, it kept the event loop alive until the timeout period expired.
320    #145 @dfilatov
321  - Added `q/queue` module, which exports an infinite promise queue
322    constructor.
323
324 ## 0.8.10
325
326  - Added ``done`` as a replacement for ``end``, taking the usual fulfillment,
327    rejection, and progress handlers. It's essentially equivalent to
328    ``then(f, r, p).end()``.
329  - Added ``Q.onerror``, a settable error trap that you can use to get full stack
330    traces for uncaught errors. #94
331  - Added ``thenResolve`` as a shortcut for returning a constant value once a
332    promise is fulfilled. #108 @ForbesLindesay
333  - Various tweaks to progress notification, including propagation and
334    transformation of progress values and only forwarding a single progress
335    object.
336  - Renamed ``nend`` to ``nodeify``. It no longer returns an always-fulfilled
337    promise when a Node callback is passed.
338  - ``deferred.resolve`` and ``deferred.reject`` no longer (sometimes) return
339    ``deferred.promise``.
340  - Fixed stack traces getting mangled if they hit ``end`` twice. #116 #121 @ef4
341  - Fixed ``ninvoke`` and ``npost`` to work on promises for objects with Node
342    methods. #134
343  - Fixed accidental coercion of objects with nontrivial ``valueOf`` methods,
344    like ``Date``s, by the promise's ``valueOf`` method. #135
345  - Fixed ``spread`` not calling the passed rejection handler if given a rejected
346    promise.
347
348 ## 0.8.9
349
350  - Added ``nend``
351  - Added preliminary progress notification support, via
352    ``promise.then(onFulfilled, onRejected, onProgress)``,
353    ``promise.progress(onProgress)``, and ``deferred.notify(...progressData)``.
354  - Made ``put`` and ``del`` return the object acted upon for easier chaining.
355    #84
356  - Fixed coercion cycles with cooperating promises. #106
357
358 ## 0.8.7
359
360  - Support [Montage Require](http://github.com/kriskowal/mr)
361
362 ## 0.8.6
363
364  - Fixed ``npost`` and ``ninvoke`` to pass the correct ``thisp``. #74
365  - Fixed various cases involving unorthodox rejection reasons. #73 #90
366    @ef4
367  - Fixed double-resolving of misbehaved custom promises. #75
368  - Sped up ``Q.all`` for arrays contain already-resolved promises or scalar
369    values. @ForbesLindesay
370  - Made stack trace filtering work when concatenating assets. #93 @ef4
371  - Added warnings for deprecated methods. @ForbesLindesay
372  - Added ``.npmignore`` file so that dependent packages get a slimmer
373    ``node_modules`` directory.
374
375 ## 0.8.5
376
377  - Added preliminary support for long traces (@domenic)
378  - Added ``fapply``, ``fcall``, ``fbind`` for non-thisp
379    promised function calls.
380  - Added ``return`` for async generators, where generators
381    are implemented.
382  - Rejected promises now have an "exception" property.  If an object
383    isRejected(object), then object.valueOf().exception will
384    be the wrapped error.
385  - Added Jasmine specifications
386  - Support Internet Explorers 7–9 (with multiple bug fixes @domenic)
387  - Support Firefox 12
388  - Support Safari 5.1.5
389  - Support Chrome 18
390
391 ## 0.8.4
392
393  - WARNING: ``promise.timeout`` is now rejected with an ``Error`` object
394    and the message now includes the duration of the timeout in
395    miliseconds.  This doesn't constitute (in my opinion) a
396    backward-incompatibility since it is a change of an undocumented and
397    unspecified public behavior, but if you happened to depend on the
398    exception being a string, you will need to revise your code.
399  - Added ``deferred.makeNodeResolver()`` to replace the more cryptic
400    ``deferred.node()`` method.
401  - Added experimental ``Q.promise(maker(resolve, reject))`` to make a
402    promise inside a callback, such that thrown exceptions in the
403    callback are converted and the resolver and rejecter are arguments.
404    This is a shorthand for making a deferred directly and inspired by
405    @gozala’s stream constructor pattern and the Microsoft Windows Metro
406    Promise constructor interface.
407  - Added experimental ``Q.begin()`` that is intended to kick off chains
408    of ``.then`` so that each of these can be reordered without having to
409    edit the new and former first step.
410
411 ## 0.8.3
412
413  - Added ``isFulfilled``, ``isRejected``, and ``isResolved``
414    to the promise prototype.
415  - Added ``allResolved`` for waiting for every promise to either be
416    fulfilled or rejected, without propagating an error. @utvara #53
417  - Added ``Q.bind`` as a method to transform functions that
418    return and throw into promise-returning functions. See
419    [an example](https://gist.github.com/1782808). @domenic
420  - Renamed ``node`` export to ``nbind``, and added ``napply`` to
421    complete the set. ``node`` remains as deprecated. @domenic #58
422  - Renamed ``Method`` export to ``sender``.  ``Method``
423    remains as deprecated and will be removed in the next
424    major version since I expect it has very little usage.
425  - Added browser console message indicating a live list of
426    unhandled errors.
427  - Added support for ``msSetImmediate`` (IE10) or ``setImmediate``
428    (available via [polyfill](https://github.com/NobleJS/setImmediate))
429    as a browser-side ``nextTick`` implementation. #44 #50 #59
430  - Stopped using the event-queue dependency, which was in place for
431    Narwhal support: now directly using ``process.nextTick``.
432  - WARNING: EXPERIMENTAL: added ``finally`` alias for ``fin``, ``catch``
433    alias for ``fail``, ``try`` alias for ``call``, and ``delete`` alias
434    for ``del``.  These properties are enquoted in the library for
435    cross-browser compatibility, but may be used as property names in
436    modern engines.
437
438 ## 0.8.2
439
440  - Deprecated ``ref`` in favor of ``resolve`` as recommended by
441    @domenic.
442  - Update event-queue dependency.
443
444 ## 0.8.1
445
446  - Fixed Opera bug. #35 @cadorn
447  - Fixed ``Q.all([])`` #32 @domenic
448
449 ## 0.8.0
450
451  - WARNING: ``enqueue`` removed.  Use ``nextTick`` instead.
452    This is more consistent with NodeJS and (subjectively)
453    more explicit and intuitive.
454  - WARNING: ``def`` removed.  Use ``master`` instead.  The
455    term ``def`` was too confusing to new users.
456  - WARNING: ``spy`` removed in favor of ``fin``.
457  - WARNING: ``wait`` removed. Do ``all(args).get(0)`` instead.
458  - WARNING: ``join`` removed. Do ``all(args).spread(callback)`` instead.
459  - WARNING: Removed the ``Q`` function module.exports alias
460    for ``Q.ref``. It conflicts with ``Q.apply`` in weird
461    ways, making it uncallable.
462  - Revised ``delay`` so that it accepts both ``(value,
463    timeout)`` and ``(timeout)`` variations based on
464    arguments length.
465  - Added ``ref().spread(cb(...args))``, a variant of
466    ``then`` that spreads an array across multiple arguments.
467    Useful with ``all()``.
468  - Added ``defer().node()`` Node callback generator.  The
469    callback accepts ``(error, value)`` or ``(error,
470    ...values)``.  For multiple value arguments, the
471    fulfillment value is an array, useful in conjunction with
472    ``spread``.
473  - Added ``node`` and ``ncall``, both with the signature
474    ``(fun, thisp_opt, ...args)``.  The former is a decorator
475    and the latter calls immediately.  ``node`` optional
476    binds and partially applies.  ``ncall`` can bind and pass
477    arguments.
478
479 ## 0.7.2
480
481  - Fixed thenable promise assimilation.
482
483 ## 0.7.1
484
485  - Stopped shimming ``Array.prototype.reduce``. The
486    enumerable property has bad side-effects.  Libraries that
487    depend on this (for example, QQ) will need to be revised.
488
489 ## 0.7.0 - BACKWARD INCOMPATIBILITY
490
491  - WARNING: Removed ``report`` and ``asap``
492  - WARNING: The ``callback`` argument of the ``fin``
493    function no longer receives any arguments. Thus, it can
494    be used to call functions that should not receive
495    arguments on resolution.  Use ``when``, ``then``, or
496    ``fail`` if you need a value.
497  - IMPORTANT: Fixed a bug in the use of ``MessageChannel``
498    for ``nextTick``.
499  - Renamed ``enqueue`` to ``nextTick``.
500  - Added experimental ``view`` and ``viewInfo`` for creating
501    views of promises either when or before they're
502    fulfilled.
503  - Shims are now externally applied so subsequent scripts or
504    dependees can use them.
505  - Improved minification results.
506  - Improved readability.
507
508 ## 0.6.0 - BACKWARD INCOMPATIBILITY
509
510  - WARNING: In practice, the implementation of ``spy`` and
511    the name ``fin`` were useful.  I've removed the old
512    ``fin`` implementation and renamed/aliased ``spy``.
513  - The "q" module now exports its ``ref`` function as a "Q"
514    constructor, with module systems that support exports
515    assignment including NodeJS, RequireJS, and when used as
516    a ``<script>`` tag. Notably, strictly compliant CommonJS
517    does not support this, but UncommonJS does.
518  - Added ``async`` decorator for generators that use yield
519    to "trampoline" promises. In engines that support
520    generators (SpiderMonkey), this will greatly reduce the
521    need for nested callbacks.
522  - Made ``when`` chainable.
523  - Made ``all`` chainable.
524
525 ## 0.5.3
526
527  - Added ``all`` and refactored ``join`` and ``wait`` to use
528    it.  All of these will now reject at the earliest
529    rejection.
530
531 ## 0.5.2
532
533  - Minor improvement to ``spy``; now waits for resolution of
534    callback promise.
535
536 ## 0.5.1
537
538  - Made most Q API methods chainable on promise objects, and
539    turned the previous promise-methods of ``join``,
540    ``wait``, and ``report`` into Q API methods.
541  - Added ``apply`` and ``call`` to the Q API, and ``apply``
542    as a promise handler.
543  - Added ``fail``, ``fin``, and ``spy`` to Q and the promise
544    prototype for convenience when observing rejection,
545    fulfillment and rejection, or just observing without
546    affecting the resolution.
547  - Renamed ``def`` (although ``def`` remains shimmed until
548    the next major release) to ``master``.
549  - Switched to using ``MessageChannel`` for next tick task
550    enqueue in browsers that support it.
551
552 ## 0.5.0 - MINOR BACKWARD INCOMPATIBILITY
553
554  - Exceptions are no longer reported when consumed.
555  - Removed ``error`` from the API.  Since exceptions are
556    getting consumed, throwing them in an errback causes the
557    exception to silently disappear.  Use ``end``.
558  - Added ``end`` as both an API method and a promise-chain
559    ending method.  It causes propagated rejections to be
560    thrown, which allows Node to write stack traces and
561    emit ``uncaughtException`` events, and browsers to
562    likewise emit ``onerror`` and log to the console.
563  - Added ``join`` and ``wait`` as promise chain functions,
564    so you can wait for variadic promises, returning your own
565    promise back, or join variadic promises, resolving with a
566    callback that receives variadic fulfillment values.
567
568 ## 0.4.4
569
570  - ``end`` no longer returns a promise. It is the end of the
571    promise chain.
572  - Stopped reporting thrown exceptions in ``when`` callbacks
573    and errbacks.  These must be explicitly reported through
574    ``.end()``, ``.then(null, Q.error)``, or some other
575    mechanism.
576  - Added ``report`` as an API method, which can be used as
577    an errback to report and propagate an error.
578  - Added ``report`` as a promise-chain method, so an error
579    can be reported if it passes such a gate.
580
581 ## 0.4.3
582
583  - Fixed ``<script>`` support that regressed with 0.4.2
584    because of "use strict" in the module system
585    multi-plexer.
586
587 ## 0.4.2
588
589  - Added support for RequireJS (jburke)
590
591 ## 0.4.1
592
593  - Added an "end" method to the promise prototype,
594    as a shorthand for waiting for the promise to
595    be resolved gracefully, and failing to do so,
596    to dump an error message.
597
598 ## 0.4.0 - BACKWARD INCOMPATIBLE*
599
600  - *Removed the utility modules. NPM and Node no longer
601    expose any module except the main module.  These have
602    been moved and merged into the "qq" package.
603  - *In a non-CommonJS browser, q.js can be used as a script.
604    It now creates a Q global variable.
605  - Fixed thenable assimilation.
606  - Fixed some issues with asap, when it resolves to
607    undefined, or throws an exception.
608
609 ## 0.3.0 - BACKWARD-INCOMPATIBLE
610
611  - The `post` method has been reverted to its original
612    signature, as provided in Tyler Close's `ref_send` API.
613    That is, `post` accepts two arguments, the second of
614    which is an arbitrary object, but usually invocation
615    arguments as an `Array`.  To provide variadic arguments
616    to `post`, there is a new `invoke` function that posts
617    the variadic arguments to the value given in the first
618    argument.
619  - The `defined` method has been moved from `q` to `q/util`
620    since it gets no use in practice but is still
621    theoretically useful.
622  - The `Promise` constructor has been renamed to
623    `makePromise` to be consistent with the convention that
624    functions that do not require the `new` keyword to be
625    used as constructors have camelCase names.
626  - The `isResolved` function has been renamed to
627    `isFulfilled`.  There is a new `isResolved` function that
628    indicates whether a value is not a promise or, if it is a
629    promise, whether it has been either fulfilled or
630    rejected.  The code has been revised to reflect this
631    nuance in terminology.
632
633 ## 0.2.10
634
635  - Added `join` to `"q/util"` for variadically joining
636    multiple promises.
637
638 ## 0.2.9
639
640  - The future-compatible `invoke` method has been added,
641    to replace `post`, since `post` will become backward-
642    incompatible in the next major release.
643  - Exceptions thrown in the callbacks of a `when` call are
644    now emitted to Node's `"uncaughtException"` `process`
645    event in addition to being returned as a rejection reason.
646
647 ## 0.2.8
648
649  - Exceptions thrown in the callbacks of a `when` call
650    are now consumed, warned, and transformed into
651    rejections of the promise returned by `when`.
652
653 ## 0.2.7
654
655  - Fixed a minor bug in thenable assimilation, regressed
656    because of the change in the forwarding protocol.
657  - Fixed behavior of "q/util" `deep` method on dates and
658    other primitives. Github issue #11.
659
660 ## 0.2.6
661
662  - Thenables (objects with a "then" method) are accepted
663    and provided, bringing this implementation of Q
664    into conformance with Promises/A, B, and D.
665  - Added `makePromise`, to replace the `Promise` function
666    eventually.
667  - Rejections are now also duck-typed. A rejection is a
668    promise with a valueOf method that returns a rejection
669    descriptor. A rejection descriptor has a
670    "promiseRejected" property equal to "true" and a
671    "reason" property corresponding to the rejection reason.
672  - Altered the `makePromise` API such that the `fallback`
673    method no longer receives a superfluous `resolved` method
674    after the `operator`.  The fallback method is responsible
675    only for returning a resolution.  This breaks an
676    undocumented API, so third-party API's depending on the
677    previous undocumented behavior may break.
678
679 ## 0.2.5
680
681  - Changed promises into a duck-type such that multiple
682    instances of the Q module can exchange promise objects.
683    A promise is now defined as "an object that implements the
684    `promiseSend(op, resolved, ...)` method and `valueOf`".
685  - Exceptions in promises are now captured and returned
686    as rejections.
687
688 ## 0.2.4
689
690  - Fixed bug in `ref` that prevented `del` messages from
691    being received (gozala)
692  - Fixed a conflict with FireFox 4; constructor property
693    is now read-only.
694
695 ## 0.2.3
696
697  - Added `keys` message to promises and to the promise API.
698
699 ## 0.2.2
700
701  - Added boilerplate to `q/queue` and `q/util`.
702  - Fixed missing dependency to `q/queue`.
703
704 ## 0.2.1
705
706  - The `resolve` and `reject` methods of `defer` objects now
707    return the resolution promise for convenience.
708  - Added `q/util`, which provides `step`, `delay`, `shallow`,
709    `deep`, and three reduction orders.
710  - Added `q/queue` module for a promise `Queue`.
711  - Added `q-comm` to the list of compatible libraries.
712  - Deprecated `defined` from `q`, with intent to move it to
713    `q/util`.
714
715 ## 0.2.0 - BACKWARD INCOMPATIBLE
716
717  - Changed post(ref, name, args) to variadic
718    post(ref, name, ...args). BACKWARD INCOMPATIBLE
719  - Added a def(value) method to annotate an object as being
720    necessarily a local value that cannot be serialized, such
721    that inter-process/worker/vat promise communication
722    libraries will send messages to it, but never send it
723    back.
724  - Added a send(value, op, ...args) method to the public API, for
725    forwarding messages to a value or promise in a future turn.
726
727 ## 0.1.9
728
729  - Added isRejected() for testing whether a value is a rejected
730    promise.  isResolved() retains the behavior of stating
731    that rejected promises are not resolved.
732
733 ## 0.1.8
734
735  - Fixed isResolved(null) and isResolved(undefined) [issue #9]
736  - Fixed a problem with the Object.create shim
737
738 ## 0.1.7
739
740  - shimmed ES5 Object.create in addition to Object.freeze
741    for compatibility on non-ES5 engines (gozala)
742
743 ## 0.1.6
744
745  - Q.isResolved added
746  - promise.valueOf() now returns the value of resolved
747    and near values
748  - asap retried
749  - promises are frozen when possible
750
751 ## 0.1.5
752
753  - fixed dependency list for Teleport (gozala)
754  - all unit tests now pass (gozala)
755
756 ## 0.1.4
757
758  - added support for Teleport as an engine (gozala)
759  - simplified and updated methods for getting internal
760    print and enqueue functions universally (gozala)
761
762 ## 0.1.3
763
764  - fixed erroneous link to the q module in package.json
765
766 ## 0.1.2
767
768  - restructured for overlay style package compatibility
769
770 ## 0.1.0
771
772  - removed asap because it was broken, probably down to the
773    philosophy.
774
775 ## 0.0.3
776
777  - removed q-util
778  - fixed asap so it returns a value if completed
779
780 ## 0.0.2
781
782  - added q-util
783
784 ## 0.0.1
785
786  - initial version