require('proof')(3, require('cadence')(prove))

function prove (async, okay) {
    var Turnstile = require('..')
    Turnstile.Set = require('../set')

    var expect = [{
        envelope: {
            module: 'turnstile',
            method: 'enter',
            when: 0,
            waited: 0,
            timedout: false,
            body: 'a',
            error: null
        },
        message: 'key'
    }, {
        envelope: {
            module: 'turnstile',
            method: 'enter',
            when: 0,
            waited: 0,
            timedout: false,
            body: 'b',
            error: null
        },
        message: 'doubled'
    }]

    var object = {
        method: function (envelope, callback) {
            var expected = expect.shift()
            okay(envelope, expected.envelope, expected.message)
            setImmediate(callback, null, 1)
        }
    }

    var turnstile = new Turnstile({ Date: { now: function () { return 0 } } })
    var set = new Turnstile.Set(object, 'method', turnstile)

    async(function () {
        set.add('a')
        set.add('b')
        set.add('b', async())
    }, function (result) {
        okay(result, 1, 'called')
    })
}

@@ -103,16 +103,22 @@
 uire('..
+/redux
 ')%0A    T
@@ -289,32 +289,91 @@
      waited: 0,%0A
+            destroyed: false,%0A            canceled: false,%0A
             time
@@ -410,33 +410,8 @@
  'a'
-,%0A            error: null
 %0A   
@@ -568,32 +568,91 @@
      waited: 0,%0A
+            destroyed: false,%0A            canceled: false,%0A
             time
@@ -689,33 +689,8 @@
  'b'
-,%0A            error: null
 %0A   

Update `t/set.t.js` to test against Redux.