GitHub repository: bigeasy/destructible
Description: Controlled demolition of complex objects.

Destructible v7.0.0-alpha.72: tag_name: v7.0.0-alpha.72
body:  * Upgrade `interrupt` to `11.0.0-alpha.26`.
 * Upgrade `extant` to `2.0.0-alpha.5`.
 * Upgrade `rescue` to `7.0.0-alpha.19`.
 * Upgrade `perhaps` to `0.0.13`.
 * Update `LICENSE` for current year.

Closes #290.
Destructible v7.0.0-alpha.71: tag_name: v7.0.0-alpha.71
body:  * Fix `readme.t.js` test count.
 * Tidy `README.md`, update `Makefile`.

Closes #289.
Destructible v7.0.0-alpha.70: tag_name: v7.0.0-alpha.70
body:  * Upgrade `perhaps` to `0.0.12`.

Closes #288.
Destructible v7.0.0-alpha.69: tag_name: v7.0.0-alpha.69
body:  * Rebuild `README.md` from `edify.md`.
 * Upgrade `interrupt` to `11.0.0-alpha.25`.
 * Upgrade `extant` to `2.0.0-alpha.4`.
 * Upgrade `rescue` to `7.0.0-alpha.18`.

Closes #287.
Destructible v7.0.0-alpha.68: tag_name: v7.0.0-alpha.68
body:  * Upgrade `interrupt` to `11.0.0-alpha.24`.
 * Upgrade `extant` to `2.0.0-alpha.3`.
 * Upgrade `rescue` to `7.0.0-alpha.17`.

Closes #286.
Destructible v7.0.0-alpha.67: tag_name: v7.0.0-alpha.67
body:  * Upgrade `interrupt` to `11.0.0-alpha.23`.
 * Upgrade `extant` to `2.0.0-alpha.2`.
 * Upgrade `rescue` to `7.0.0-alpha.16`.

Closes #285.
Destructible v7.0.0-alpha.66: tag_name: v7.0.0-alpha.66
body:  * Upgrade `interrupt` to `11.0.0-alpha.21`.
 * Upgrade `extant` to `2.0.0-alpha.1`.
 * Upgrade `rescue` to `7.0.0-alpha.15`.
 * Upgrade `perhaps` to `0.0.11`.
 * Build with Node.js 16 on GitHub Actions.
 * Build with Node.js 16 on Travis CI.

Closes #284.
Destructible v7.0.0-alpha.65: tag_name: v7.0.0-alpha.65
body:  * Spell check `README.md`.

Closes #283.
Destructible v7.0.0-alpha.64: tag_name: v7.0.0-alpha.64
body:  * Upgrade `perhaps` to `0.0.10`.

Closes #282.
Destructible v7.0.0-alpha.63: tag_name: v7.0.0-alpha.63
body:  * Upgrade `rescue` to `7.0.0-alpha.14`.

Closes #281.
Destructible v7.0.0-alpha.62: tag_name: v7.0.0-alpha.62
body:  * Remove `rescue`.

Closes #280.
Destructible v7.0.0-alpha.61: tag_name: v7.0.0-alpha.61
body:  * Remove copacetic, destructive, and errored.

Closes #279.
Destructible v7.0.0-alpha.60: tag_name: v7.0.0-alpha.60
body:  * Upgrade `perhaps` to `0.0.9`.

Closes #278.
Destructible v7.0.0-alpha.59: tag_name: v7.0.0-alpha.59
body:  * Make `nop` a production dependency.

Closes #277.
Destructible v7.0.0-alpha.58: tag_name: v7.0.0-alpha.58
body:  * Ephemeral and durable now return a future.
 * Upgrade `perhaps` to `0.0.8`.
 * Remove `done`.
 * Upgrade `perhaps` to `0.0.7`.

Closes #276.
Destructible v7.0.0-alpha.57: tag_name: v7.0.0-alpha.57
body:  * `copacetic` and `destructive` are outgoing.

Closes #275.
Destructible v7.0.0-alpha.56: tag_name: v7.0.0-alpha.56
body: 

Closes #274.
Destructible v7.0.0-alpha.55: tag_name: v7.0.0-alpha.55
body:  * Maybe thrown DESTROYED error.

Closes #273.
Destructible v7.0.0-alpha.54: tag_name: v7.0.0-alpha.54
body:  * Upgrade `interrupt` to `11.0.0-alpha.20`.
 * Upgrade `rescue` to `7.0.0-alpha.13`.

Closes #271.
Destructible v7.0.0-alpha.53: tag_name: v7.0.0-alpha.53
body:  * Upgrade `interrupt` to `11.0.0-alpha.19`.
 * Upgrade `rescue` to `7.0.0-alpha.12`.

Closes #270.
Destructible v7.0.0-alpha.52: tag_name: v7.0.0-alpha.52
body:  * Only audit the `$trace` function if it exists.

Closes #269.
Destructible v7.0.0-alpha.51: tag_name: v7.0.0-alpha.51
body:  * Validate call trace callback.

Closes #268.
Destructible v7.0.0-alpha.50: tag_name: v7.0.0-alpha.50
body:  * Do not switch shutdown if waits are empty.

Closes #266.
Destructible v7.0.0-alpha.49: tag_name: v7.0.0-alpha.49
body:  * Get rid of `isDestroyedIfDestroyed`.

Closes #265.
Destructible v7.0.0-alpha.48: tag_name: v7.0.0-alpha.48
body:  * Add Extant dependency.
 * Upgrade `rescue` to `7.0.0-alpha.11`.
 * Upgrade `interrupt` to `11.0.0-alpha.18`.

Closes #264.
Destructible v7.0.0-alpha.47: tag_name: v7.0.0-alpha.47
body:  * Upgrade `interrupt` to `11.0.0-alpha.17`.
 * Upgrade `rescue` to `7.0.0-alpha.10`.

Closes #263.
Destructible v7.0.0-alpha.46: tag_name: v7.0.0-alpha.46
body:  * Tracing, sub-destructible durable error.

Closes #262.
Destructible v7.0.0-alpha.45: tag_name: v7.0.0-alpha.45
body:  * Fix `destructive` unit test.

Closes #261.
Destructible v7.0.0-alpha.44: tag_name: v7.0.0-alpha.44
body:  * Remove debugging annotation.
 * `destructive` no longer wraps error.
 * Wrap caught error if it is `DESTROYED`.

Closes #260.
Destructible v7.0.0-alpha.43: tag_name: v7.0.0-alpha.43
body:  * Unit test `copacetic2`.

Closes #259.
Destructible v7.0.0-alpha.42: tag_name: v7.0.0-alpha.42
body:  * `copacetic` does not need to capture the error.

Closes #258.
Destructible v7.0.0-alpha.41: tag_name: v7.0.0-alpha.41
body: 

Closes #257.
Destructible v7.0.0-alpha.40: tag_name: v7.0.0-alpha.40
body:  * Panic handlers always run after destructors.
 * Moved preamble from old Docco.

Closes #256.
Destructible v7.0.0-alpha.39: tag_name: v7.0.0-alpha.39
body:  * Add a path, useful for debugging.

Closes #255.
Destructible v7.0.0-alpha.38: tag_name: v7.0.0-alpha.38
body:  * Tidy Docco.
 * Remove `_children` list, tidy Docco.
 * Spread panic to deferrable objects.
 * Fix unit test count.
 * Always propagate destruct when errored.

Closes #254.
Destructible v7.0.0-alpha.37: tag_name: v7.0.0-alpha.37
body:  * Test awaiting `done`.
 * Tidy sub-destructible option parsing.
 * Test set sub-destructible timeout.
 * Test rescue of a promise.
 * Destroy deferrables if errored.
 * Ephemeral timer takeover.
 * On error return for sub-destructibles.
 * Use Future in shutdown.
 * New constructor arguments.
 * Remove trace function check.
 * Remove `exceptional`.
 * Auto-destroy rescue, remove terminal.

Closes #253.
Destructible v7.0.0-alpha.36: tag_name: v7.0.0-alpha.36
body:  * Propagate rescue instance.

Closes #252.
Destructible v7.0.0-alpha.35: tag_name: v7.0.0-alpha.35
body:  * New implementation of `rescue`.

Closes #251.
Destructible v7.0.0-alpha.34: tag_name: v7.0.0-alpha.34
body:  * Isolate `_progress`.
 * A single `destroy()` method not that its sync.
 * Tidy Docco.
 * Implement `panic`.
 * Move `readme.t.js` to `swipe.t.js`.
 * Benchmark for worker functions.

Closes #250.
Destructible v7.0.0-alpha.33: tag_name: v7.0.0-alpha.33
body:  * Unit tests for new error patterns.
 * Sketch of error grouping in trees.
 * Make space for error groups.

Closes #249.
Destructible v7.0.0-alpha.32: tag_name: v7.0.0-alpha.32
body:  * Fix `drain` race condition.

Closes #248.
Destructible v7.0.0-alpha.31: tag_name: v7.0.0-alpha.31
body:  * Use a new return `null` `drain`/`done` pattern.

Closes #247.
Destructible v7.0.0-alpha.30: tag_name: v7.0.0-alpha.30
body:  * Upgrade `interrupt` to `11.0.0-alpha.16`.
 * Upgrade `rescue` to `7.0.0-alpha.9`.
 * Update `LICENSE` for 2021.
 * Remove Prospective dependency.

Closes #246.
Destructible v7.0.0-alpha.29: tag_name: v7.0.0-alpha.29
body:  * Last kludge full of typos.

Closes #245.
Destructible v7.0.0-alpha.28: tag_name: v7.0.0-alpha.28
body:  * Kludge for now. Still need to rethink rescue.

Closes #244.
Destructible v7.0.0-alpha.27: tag_name: v7.0.0-alpha.27
body:  * Thoughts on `recoverable`.
 * Rename `promise` and `done`.
 * Countdown starts from zero.
 * Created `isDestroyedIfDestroyed`.
 * Fix ephemerals increment.

Closes #243.
Destructible v7.0.0-alpha.26: tag_name: v7.0.0-alpha.26
body:  * Upgrade `interrupt` to `11.0.0-alpha.14`.
 * Upgrade `rescue` to `7.0.0-alpha.8`.

Closes #242.
Destructible v7.0.0-alpha.25: tag_name: v7.0.0-alpha.25
body:  * Upgrade `rescue` to `7.0.0-alpha.7`.

Closes #241.
Destructible v7.0.0-alpha.24: tag_name: v7.0.0-alpha.24
body:  * Upgrade `interrupt` to `11.0.0-alpha.13`.

Closes #240.
Destructible v7.0.0-alpha.23: tag_name: v7.0.0-alpha.23
body:  * Ephemeral is also a stage boundary.
 * Allow additional user conditional to operational.
 * Promise logic based on the four types of strand.
 * Durable destroy was no longer propagating.

Closes #239.
Destructible v7.0.0-alpha.22: tag_name: v7.0.0-alpha.22
body:  * `typeof` is fine.
 * Remove Counter object.

Closes #238.
Destructible v7.0.0-alpha.21: tag_name: v7.0.0-alpha.21
body:  * Scram when increment is not zero.

Closes #237.
Destructible v7.0.0-alpha.20: tag_name: v7.0.0-alpha.20
body:  * Upgrade `rescue` to `7.0.0-alpha.6`.
 * Upgrade `empathy` to `0.0.3`.
 * New conception of stages.
 * Fix initialization, rescue, exceptional.

Closes #236.
Destructible v7.0.0-alpha.19: tag_name: v7.0.0-alpha.19
body:  * Added a strained concept of a counted object.

Closes #235.
Destructible v7.0.0-alpha.18: tag_name: v7.0.0-alpha.18
body:  * Build with Node.js 12, 14, and 15 on CI/CD.

Closes #234.
Destructible v7.0.0-alpha.17: tag_name: v7.0.0-alpha.17
body:  * Replace iterator object with generator.

Closes #233.
Destructible v7.0.0-alpha.16: tag_name: v7.0.0-alpha.16
body:  * Accept tracers everywhere.
 * Upgrade `interrupt` to `11.0.0-alpha.11`.

Closes #232.
Destructible v7.0.0-alpha.15: tag_name: v7.0.0-alpha.15
body:  * Upgrade `interrupt` to `11.0.0-alpha.3`.

Closes #231.
Destructible v7.0.0-alpha.14: tag_name: v7.0.0-alpha.14
body:  * Fix ephemeral count increment in `exceptional`. Closes #229.

Closes #230.
Destructible v7.0.0-alpha.13: tag_name: v7.0.0-alpha.13
body:  * Implement error-raising `durable`, `terminal`. Closes #227.
 * Implement error-raising `durable`. See #227.
 * Start of Docco based documentation. See #197.
 * Rename `working` to `progress`. Closes #226.
 * Remove `Destructible.Destroyed`. Closes #225.
 * Upgrade `interrupt` to `11.0.0-alpha.1`. Closes #224.
 * Revert `operative`. Closes #223.
 * Remove `context`. Closes #222.
 * Rename `key` to `id`. Closes #221.

Closes #228.
Destructible v7.0.0-alpha.12: tag_name: v7.0.0-alpha.12
body:  * Track working with common reference. Closes #219.
 * Always fire working.

Closes #220.
Destructible v7.0.0-alpha.11: tag_name: v7.0.0-alpha.11
body:  * Rename `operable` to `operative`. Closes #217.

Closes #218.
Destructible v7.0.0-alpha.10: tag_name: v7.0.0-alpha.10
body:  * Implement an instance `rescue()`. Closes #215.
 * `Destructible.rescue()` accepts a `Promise`. See #215.
 * Implement staged destruction. Closes #214.
 * Notes on staged destruction. See #214.
 * Notes on a `Destructible.rescue()` race. See #215.

Closes #216.
Destructible v7.0.0-alpha.9: tag_name: v7.0.0-alpha.9
body:  * Implement `drain`. Closes #212.

Closes #213.
Destructible v7.0.0-alpha.8: tag_name: v7.0.0-alpha.8
body:  * Set `_working` to false on scram. Closes #210.

Closes #211.
Destructible v7.0.0-alpha.7: tag_name: v7.0.0-alpha.7
body:  * Return `this` from `destroy()`. Closes #208.

Closes #209.
Destructible v7.0.0-alpha.6: tag_name: v7.0.0-alpha.6
body:  * Remove done `TODO`.
 * `destructed` as boolean, `rejected` as exception. Closes #206.

Closes #207.
Destructible v7.0.0-alpha.5: tag_name: v7.0.0-alpha.5
body:  * Update `Destructible.rescue` test for new argument. See #189.
 * Scram not exiting loop when waiting is empty. Closes #204.

Closes #205.
Destructible v7.0.0-alpha.4: tag_name: v7.0.0-alpha.4
body:  * Build with only Node.js 12 in CI/CD. Closes #202.

Closes #203.
Destructible v7.0.0-alpha.3: tag_name: v7.0.0-alpha.3
body:  * Use linked-list for destructors. Closes #200.
 * Create a specific error for destroyed exceptions. Closes #199.
 * Replace `Destructor` with iterable `clear`. Closes #198.
 * Run through the Docco again. See #197.
 * Enable delay of destruction or sub-destructible. Closes #196.
 * Synchronous destructors only, with ephemerals. Closes #195.

Closes #201.
Destructible v7.0.0-alpha.2: tag_name: v7.0.0-alpha.2
body:  * Upgrade `interrupt` to `^10.1.0`. Closes #193.

Closes #194.
Destructible v7.0.0-alpha.1: tag_name: v7.0.0-alpha.1
body:  * Remove `Destructible.Rescuable`. Closes #191.

Closes #192.
Destructible v7.0.0-alpha.0: tag_name: v7.0.0-alpha.0
body:  * Indicate desire to raise exception with boolean. Closes #189.
 * Do not include cause on ephemeral error. Closes #188.
 * Use linked list instead of array. Closes #187.
 * Remove the rest of `attemptable`. See #184.
 * Benchmark overhead. Closes #186.
 * Raise exception on new strand when destroyed. Closes #185.
 * Remove `attemptable`. Closes #184.
 * Remove sub-destructible specific timeout.
 * Return value directly from strand launch. Closes #183.
 * Shutdown progress, ephemerals inherit scram.

Closes #190.
Destructible v6.2.5: tag_name: v6.2.5
body:  * Upgrade `prospective` to `^0.3.0`. Closes #181.

Closes #182.
Destructible v6.2.4: tag_name: v6.2.4
body:  * Logic for errored flag propagation still faulty. See #177.

Closes #180.
Destructible v6.2.3: tag_name: v6.2.3
body:  * Remove debugging message. See #177.

Closes #179.
Destructible v6.2.2: tag_name: v6.2.2
body:  * Correctly propagate child error flag. Closes #177.

Closes #178.
Destructible v6.2.1: tag_name: v6.2.1
body:  * Ensure that function invocation always async. Closes #175.

Closes #176.
Destructible v6.2.0: tag_name: v6.2.0
body:  * Wrap await in an `ephemeral`. Closes #173.

Closes #174.
Destructible v6.1.0: tag_name: v6.1.0
body:  * Wrapper for common root usage logic. Closes #171.
 * Implement waitable initialization. Closes #170.
 * Unit test `cause` deprecation placeholder. Closes #169.
 * Tidy function to `Promise` conversion.

Closes #172.
Destructible v6.0.0: tag_name: v6.0.0
body:  * Upgrade `prospective` to `^0.2.0`. Closes #167.
 * Upgrade `interrupt` to `^10.0.1`. Closes #166.
 * Upgrade `proof` to `^9.0.1`. Closes #165.

Closes #168.
Destructible v5.2.0-alpha.6: tag_name: v5.2.0-alpha.6
body:  * Errored propagation through destruct channel. Closes #163.
 * Always call `_destroy` internally, not `destroy`. Closes #162.
 * Remove `Delay` dependency.
 * Notes on scrammable, minor code tidy. Closes #146.
 * Remove user scrammable. See #146.
 * Remove context passed to `_destroy`. Closes #160.
 * Add sub-destructible error in catch block. See #160.

Closes #164.
Destructible v5.2.0-alpha.5: tag_name: v5.2.0-alpha.5
body:  * Remove `cause`. Closes #158.
 * Remove `errored` argument to destructor. Closes #157.
 * Update `LICENSE` for 2020. Closes #156.

Closes #159.
Destructible v5.2.0-alpha.4: tag_name: v5.2.0-alpha.4
body:  * Remove `/.dots` from `.gitignore`. Closes #154.

Closes #155.
Destructible v5.2.0-alpha.3: tag_name: v5.2.0-alpha.3
body:  * Propagate destruction from ephemeral on error. Closes #152.

Closes #153.
Destructible v5.2.0-alpha.2: tag_name: v5.2.0-alpha.2
body:  * Tidy `.gitignore`. Closes #150.
 * Caret pin Interrupt to `9.0.0-alpha.1`. Closes #149.

Closes #151.
Destructible v5.2.0-alpha.1: tag_name: v5.2.0-alpha.1
body:  * Accept a function to `durable` and `ephemeral`. Closes #147.
 * Notes on reverting scrammable exposure. See #146.

Closes #148.
Destructible v5.2.0-alpha.0: tag_name: v5.2.0-alpha.0
body:  * Rename result value to `destructed`. Closes #144. Closes #143.
 * Replace a Future dependency with a bare `Promise`. See #143.

Closes #145.
Destructible v5.1.0-alpha.3: tag_name: v5.1.0-alpha.3
body:  * Create a Markdown readme with badges. Closes #141.
 * Build with Actions, ship coverage to Codecov. Closes #140. Closes #139.
 * Child durable destroy destroys parent. Closes #138.
 * Revert tests to Proof. See #137.

Closes #142.
Destructible v5.1.0-alpha.2: tag_name: v5.1.0-alpha.2
body:  * Revert destructors in reverse order. See #27.

Closes #136.
Destructible v5.1.0-alpha.1: tag_name: v5.1.0-alpha.1
body:  * Implement countdown to destruction. Closes #131.
 * Run destructors in the reverse order of addition. Closes #27.
 * Explicitly register scrammable promises. Closes #128.
 * Unregister scrams when the Promise returns. Closes #130. See #128.

Closes #133.
Destructible v5.1.0-alpha.0: tag_name: v5.1.0-alpha.0
body:  * Implement countdown to destruction. Closes #131.
 * Run destructors in the reverse order of addition. Closes #27.
 * Explicitly register scrammable promises. Closes #128.
 * Unregister scrams when the Promise returns. Closes #130. See #128.

Closes #133.