Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Firstly, the transition from the stack for request 2 back to the stack for request 1 via a synchronous path should be guarded immediately. All such transitions definitely represent implementation errors - since the only way to "reactivate" a request's code should be via resolution of the I/O for which they suspended in the first place. This implies that we provide further "guarding" semantics, and configurable ones, for the framework's validation of the component target of a dispatch - via either listeners or invokers - similar to the "destroyed component detection" operated by FLUID-4890. JIRA at http://issues.fluidproject.org/browse/FLUID-5577

Point 2

Secondly, we might consider any attempt to modify a set of listeners whilst we are in the process of iterating through them, to represent an implementation error - not least, because the current framework will ignore any such request, which is most likely a mismatch with any reasonable expectation of the implementor. Presumably we should allow an exception for a listener removing ITSELF from the listener chain which is an accepted implementation pattern (cf the "once" pattern within jQuery etc.). This implies that the "fail-fast" behaviour should apply to modification which would hit any listener other than the one at the currently notifying index. This seems like an annoyance to implement, and in any case would only provide detection later than that of Point 1, which is effective but rather less glamorous. We should therefore concentrate on the component validation scheme first. JIRA at http://issues.fluidproject.org/browse/FLUID-5578

The Full Trace:

 

Code Block
titleTrace
linenumberstrue
20:21:37.261:  Registering module infusion from path E:\source\gits\gpii\node_modules\universal\node_modules\infusion
20:21:37.293:  Registering module kettle from path E:\source\gits\gpii\node_modules\universal\node_modules\kettle
20:21:37.594:  Clearing cache for component flowManager.io with gradeNames [
    "flowManager.io",
    "fluid.littleComponent",
    "kettle.config",
    "autoInit"
]
20:21:37.864:  Created new instantiator with id 9wrq5kv4-19 in order to operate on component kettle.test.serverEnvironment
20:21:37.906:  Successfully queued test Flow Manager update tests
20:21:37.919:  Initializing the Express app
20:21:37.924:  Initializing the HTTP server.
20:21:38.128:  Initializing the socket.io.
info: socket.io started
20:21:38.232:  Opening Kettle Server on port 8081
20:21:38.235:  Kettle Server 9wrq5kv4-108 is listening on port 8081
20:21:38.236:  connecting socket.io to: ws://localhost:8081/update
20:21:38.238:  Invoked new XHR request: Error
    at Object.ioClient.util.request (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\test\utils\js\KettleTestUtils.js:195:45)
    at Socket.handshake (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\node_modules\socket.io-client\lib\socket.js:149:25)
    at Socket.connect (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\node_modules\socket.io-client\lib\socket.js:209:10)
    at new Socket (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\node_modules\socket.io-client\lib\socket.js:61:12)
    at Object.io.connect (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\node_modules\socket.io-client\lib\io.js:193:16)
    at kettle.test.request.io.connect (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\test\utils\js\KettleTestUtils.js:182:28)
    at Object.invokeInvoker [as connect] (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:1664:29)
    at kett .... [output suppressed at 1024 chars - for more output, increase fluid.logObjectRenderChars]
debug: client authorized
info: handshake authorized M1Yq4Sq5t8KEL3FVxQE3
debug: setting request GET /socket.io/1/websocket/M1Yq4Sq5t8KEL3FVxQE3
debug: set heartbeat interval for client M1Yq4Sq5t8KEL3FVxQE3
debug: client authorized for 
debug: websocket writing 1::
debug: client authorized for /update
debug: websocket writing 1::/update
&&&&&&&&&&&&&&&&& FIRING SESSIONAWARE ONERROR FROM Error
    at gpii.request.flowManager.sessionAware.withSession (E:\source\gits\gpii\node_modules\universal\gpii\node_modules\flowManager\src\FlowManagerUtilities.js:151:81)
    at Object.invokeInvoker [as withSession] (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:1664:29)
    at gpii.request.flowManager.userUpdateHandle (E:\source\gits\gpii\node_modules\universal\gpii\node_modules\flowManager\src\UserUpdate.js:85:14)
    at invokeInvoker (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:1664:29)
    at fluid.withEnvironment (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:1880:20)
    at Object.fluid.tryCatch (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\Fluid.js:219:24)
    at fluid.withEnvironment (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:1875:22)
    at Object.fluid.event.invokeListener (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\Fluid.js:1052:25)
    at fluid.event.dispatchListener.togo (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:1722:36)
    at fireToListeners (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\Fluid.js:1106:68)
    at fluid.makeEventFirer.that.fire (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\Fluid.js:1205:24)
    at Object.fluid.fireEvent (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\Fluid.js:1219:24)
    at Object.fluid.initDependent (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:1316:15)
    at fluid.bindDeferredComponent (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:1337:23)
    at fireToListeners (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\Fluid.js:1106:68)
    at Object.fluid.makeEventFirer.that.fire (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\Fluid.js:1205:24)
    at kettle.requests.handleRequest (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\lib\request.js:76:31)
    at invokeInvoker (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:1664:29)
    at fireToListeners (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\Fluid.js:1106:68)
    at Object.fluid.makeEventFirer.that.fire (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\Fluid.js:1205:24)
    at Socket.onMessage (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\lib\server.io.js:106:54)
    at Socket.EventEmitter.emit [as $emit] (events.js:91:17)
    at SocketNamespace.handlePacket (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\node_modules\socket.io\lib\namespace.js:335:22)
    at Manager.onClientMessage (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\node_modules\socket.io\lib\manager.js:518:38)
    at WebSocket.Transport.onMessage (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\node_modules\socket.io\lib\transport.js:369:20)
    at Parser.<anonymous> (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\node_modules\socket.io\lib\transports\websocket\hybi-16.js:39:10)
    at Parser.EventEmitter.emit (events.js:88:17)
    at opcodeHandlers.1.finish (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\node_modules\socket.io\lib\transports\websocket\hybi-16.js:295:16)
    at Parser.opcodeHandlers.1.expectData [as expectHandler] (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\node_modules\socket.io\lib\transports\websocket\hybi-16.js:306:15)
    at Parser.add (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\node_modules\socket.io\lib\transports\websocket\hybi-16.js:482:24)
    at Parser.expect (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\node_modules\socket.io\lib\transports\websocket\hybi-16.js:519:10)
    at Parser.opcodeHandlers.1.expectData (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\node_modules\socket.io\lib\transports\websocket\hybi-16.js:305:18)
    at Parser.add (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\node_modules\socket.io\lib\transports\websocket\hybi-16.js:482:24)
    at Parser.expect (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\node_modules\socket.io\lib\transports\websocket\hybi-16.js:519:10)
    at opcodeHandlers.1.expectData (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\node_modules\socket.io\lib\transports\websocket\hybi-16.js:303:16)
    at opcodeHandlers.1 (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\node_modules\socket.io\lib\transports\websocket\hybi-16.js:320:9)
    at Parser.processPacket (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\node_modules\socket.io\lib\transports\websocket\hybi-16.js:553:8)
    at Parser.add (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\node_modules\socket.io\lib\transports\websocket\hybi-16.js:482:24)
    at Socket.WebSocket.onSocketConnect (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\node_modules\socket.io\lib\transports\websocket\hybi-16.js:146:17)
    at Socket.EventEmitter.emit (events.js:88:17)
    at TCP.onread (net.js:395:14)
Current request: { typeName: 'kettle.requests.request.io',
  id: '9wrq5kv4-568',
  destroy: [Function],
  options: 
   { gradeNames: 
      [ 'kettle.requests.request.io',
        'kettle.requests.request',
        'fluid.eventedComponent',
        'fluid.littleComponent',
        'fluid.applyGradeLinkage',
        'autoInit' ],
     socket: 
      { id: 'M1Yq4Sq5t8KEL3FVxQE3',
        namespace: [Object],
        manager: [Object],
        disconnected: false,
        ackPackets: 0,
        acks: {},
        flags: [Object],
        readable: true,
        store: [Object],
        _events: [Object],
        fluidRequest: [Circular] },
     data: 'You shall not pass!!',
     send: [Function: ack],
     members: 
      { socket: '{that}.options.socket',
        data: '{that}.options.data',
        send: '{that}.options.send' },
     listeners: { onCreate: [Object], onError: [Object], onSuccess: [Object] },
     invokers: 
      { onErrorHandler: [Object],
        onSuccessHandler: [Object],
        ensureResCompleted: [Object],
        attachFluidRequest: [Object] },
     components: { handler: [Object] },
     events: 
      { handle: null,
        onRequestEnd: null,
        onError: null,
        onSuccess: null,
        onCreate: null,
        onAttach: null,
        onClear: null,
        onDestroy: null,
        afterDestroy: null },
     argumentMap: { options: 0 } },
  nickName: 'io',
  events: 
   { handle: 
      { eventId: '9wrq5kv4-569',
        name: 'handle of component with typename kettle.requests.request.io and id 9wrq5kv4-568',
        ownerId: '9wrq5kv4-568',
        typeName: 'fluid.event.firer',
        destroy: [Function],
        addListener: [Function],
        removeListener: [Function],
        fireToListeners: [Function],
        fire: [Function],
        listeners: [Object],
        byId: [Object],
        sortedListeners: [Object] },
     onRequestEnd: 
      { eventId: '9wrq5kv4-570',
        name: 'onRequestEnd of component with typename kettle.requests.request.io and id 9wrq5kv4-568',
        ownerId: '9wrq5kv4-568',
        typeName: 'fluid.event.firer',
        destroy: [Function],
        addListener: [Function],
        removeListener: [Function],
        fireToListeners: [Function],
        fire: [Object] },
     onError: 
      { eventId: '9wrq5kv4-571',
        name: 'onError of component with typename kettle.requests.request.io and id 9wrq5kv4-568',
        ownerId: '9wrq5kv4-568',
        typeName: 'fluid.event.firer',
        destroy: [Function],
        addListener: [Function],
        removeListener: [Function],
        fireToListeners: [Function],
        fire: [Function],
        listeners: [Object],
        byId: [Object],
        sortedListeners: [Object] },
     onSuccess: 
      { eventId: '9wrq5kv4-572',
        name: 'onSuccess of component with typename kettle.requests.request.io and id 9wrq5kv4-568',
        ownerId: '9wrq5kv4-568',
        typeName: 'fluid.event.firer',
        destroy: [Function],
        addListener: [Function],
        removeListener: [Function],
        fireToListeners: [Function],
        fire: [Function],
        listeners: [Object],
        byId: [Object],
        sortedListeners: [Object] },
     onCreate: 
      { eventId: '9wrq5kv4-573',
        name: 'onCreate of component with typename kettle.requests.request.io and id 9wrq5kv4-568',
        ownerId: '9wrq5kv4-568',
        typeName: 'fluid.event.firer',
        destroy: [Function],
        addListener: [Function],
        removeListener: [Function],
        fireToListeners: [Function],
        fire: [Function],
        listeners: [Object],
        byId: [Object],
        sortedListeners: [Object] },
     onAttach: 
      { eventId: '9wrq5kv4-574',
        name: 'onAttach of component with typename kettle.requests.request.io and id 9wrq5kv4-568',
        ownerId: '9wrq5kv4-568',
        typeName: 'fluid.event.firer',
        destroy: [Function],
        addListener: [Function],
        removeListener: [Function],
        fireToListeners: [Function],
        fire: [Function] },
     onClear: 
      { eventId: '9wrq5kv4-575',
        name: 'onClear of component with typename kettle.requests.request.io and id 9wrq5kv4-568',
        ownerId: '9wrq5kv4-568',
        typeName: 'fluid.event.firer',
        destroy: [Function],
        addListener: [Function],
        removeListener: [Function],
        fireToListeners: [Function],
        fire: [Function] },
     onDestroy: 
      { eventId: '9wrq5kv4-576',
        name: 'onDestroy of component with typename kettle.requests.request.io and id 9wrq5kv4-568',
        ownerId: '9wrq5kv4-568',
        typeName: 'fluid.event.firer',
        destroy: [Function],
        addListener: [Function],
        removeListener: [Function],
        fireToListeners: [Function],
        fire: [Function] },
     afterDestroy: 
      { eventId: '9wrq5kv4-577',
        name: 'afterDestroy of component with typename kettle.requests.request.io and id 9wrq5kv4-568',
        ownerId: '9wrq5kv4-568',
        typeName: 'fluid.event.firer',
        destroy: [Function],
        addListener: [Function],
        removeListener: [Function],
        fireToListeners: [Function],
        fire: [Function] } },
  ensureResCompleted: { [Function: invokeInvoker] '$$fluid_guid': '9wrq5kv4-578' },
  attachFluidRequest: { [Function: invokeInvoker] '$$fluid_guid': '9wrq5kv4-579' },
  onErrorHandler: { [Function: invokeInvoker] '$$fluid_guid': '9wrq5kv4-580' },
  onSuccessHandler: { [Function: invokeInvoker] '$$fluid_guid': '9wrq5kv4-583' },
  socket: 
   { id: 'M1Yq4Sq5t8KEL3FVxQE3',
     namespace: 
      { manager: [Object],
        name: '/update',
        sockets: [Object],
        auth: false,
        flags: [Object],
        _events: [Object] },
     manager: 
      { server: [Object],
        namespaces: [Object],
        sockets: [Object],
        _events: [Object],
        settings: [Object],
        handshaken: [Object],
        connected: [Object],
        open: [Object],
        closed: {},
        rooms: [Object],
        roomClients: [Object],
        oldListeners: [Object],
        sequenceNumber: -2033909449,
        gc: [Object] },
     disconnected: false,
     ackPackets: 0,
     acks: {},
     flags: { endpoint: '/update', room: '' },
     readable: true,
     store: { store: [Object], id: 'M1Yq4Sq5t8KEL3FVxQE3', data: {} },
     _events: 
      { error: [Function],
        message: [Function: onMessage],
        disconnect: [Function] },
     fluidRequest: [Circular] },
  data: 'You shall not pass!!',
  send: [Function: ack],
  handlerContext: 'kettle.requests.request.handler.userUpdate',
  handler: 
   { typeName: 'kettle.requests.request.handler',
     id: '9wrq5kv4-585',
     destroy: [Function],
     options: 
      { gradeNames: [Object],
        invokers: [Object],
        listeners: [Object],
        argumentMap: [Object],
        events: [Object] },
     nickName: 'handler',
     events: 
      { onSolutionsRegistry: [Object],
        onDevice: [Object],
        onToken: [Object],
        onPreferences: [Object],
        onMatch: [Object],
        onReadyForLifecycle: [Object],
        onReadyToMatch: [Object],
        onCreate: [Object],
        onAttach: [Object],
        onClear: [Object],
        onDestroy: [Object],
        afterDestroy: [Object] },
     getPreferences: { [Function: invokeInvoker] '$$fluid_guid': '9wrq5kv4-603' },
     runMatchMakerFramework: { [Function: invokeInvoker] '$$fluid_guid': '9wrq5kv4-604' },
     getSolutions: { [Function: invokeInvoker] '$$fluid_guid': '9wrq5kv4-605' },
     fireOnMatch: { [Function: invokeInvoker] '$$fluid_guid': '9wrq5kv4-606' },
     onMatchHandler: { [Function: invokeInvoker] '$$fluid_guid': '9wrq5kv4-607' },
     handle: [Function: invokeInvoker],
     getActiveSessionTokens: [Function: invokeInvoker],
     withSession: [Function: invokeInvoker],
     onMatch: [Function: invokeInvoker] } }
debug: websocket writing 5::/update:{"name":"error","args":[{"isError":true,"message":"Error handling request which required active session, but none was active"}]}
20:21:38.305:  Sending a GET request to: /user/testUser1/login on port 8081
20:21:38.324:  gpii.request.flowManager.getPreferences called - fetching preferences
20:21:38.326:  gpii.request.flowManager.getDevice called - fetching device info
20:21:38.367:  Fetched device reporter data: {
    "solutions": [
        {
            "id": "test.dummy"
        }
    ],
    "OS": {
        "id": "win32",
        "version": "6.1.7601"
    }
}
20:21:38.370:  Fetched raw user preferences: {
    "token": "testUser1",
    "preferences": {
        "flat": {
            "contexts": {
                "gpii-default": {
                    "name": "Default preferences",
                    "preferences": {
                        "http://registry.gpii.net/applications/test.dummy": {
                            "dummySetting1": 12
                        }
                    }
                }
            }
        }
    }
}
20:21:38.371:  Raw preferences fetched by preferencesServer: [object Object]
20:21:38.372:  Fetched user preferences: {
    "contexts": {
        "gpii-default": {
            "name": "Default preferences",
            "preferences": {
                "http://registry.gpii.net/applications/test.dummy": {
                    "dummySetting1": 12
                }
            }
        }
    }
}
20:21:38.372:  Fetched solutions registry: {
    "test.dummy": {
        "name": "Dummy solution registry entry",
        "contexts": {
            "OS": [
                {
                    "id": "darwin"
                }
            ]
        },
        "settingsHandlers": [
            {
                "type": "gpii.settingsHandlers.noSettings",
                "capabilities": [
                    "applications.test\\.dummy.id"
                ],
                "capabilitiesTransformations": {
                    "dummySetting1": "http://registry\\.gpii\\.net/common/fontSize",
                    "dummySetting2": "http://registry\\.gpii\\.net/common/setting2"
                }
            }
        ],
        "lifecycleManager": {
            "start": [],
            "stop": []
        }
    }
}
20:21:38.373:  MatchMaker Framework: dispatching to the flat MatchMaker
Returned from MM
!*!!*!*!*!*!*!!* FIRING TO ONMATCH NOW!!! listeners are [
    {
        "listener": { Function
            "$$fluid_guid": "9wrq5kv4-606"
        },
        "predicate": undefined,
        "namespace": "kettle.requests.request.handler.fireOnMatch",
        "softNamespace": true,
        "priority": 0
    },
    {
        "listener": { Function
            "$$fluid_guid": "9wrq5kv4-652"
        },
        "predicate": undefined,
        "namespace": "kettle.requests.request.handler.fireOnMatch",
        "softNamespace": true,
        "priority": 1
    }
]
&&&&&&&&&&&&&&&&& FIRING SESSIONAWARE ONERROR FROM Error
    at gpii.request.flowManager.sessionAware.withSession (E:\source\gits\gpii\node_modules\universal\gpii\node_modules\flowManager\src\FlowManagerUtilities.js:151:81)
    at Object.invoke (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:1623:25)
    at Object.invokeInvoker [as withSession] (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:1650:32)
    at gpii.request.flowManager.onMatchUpdateHandler (E:\source\gits\gpii\node_modules\universal\gpii\node_modules\flowManager\src\UserUpdate.js:111:14)
    at invokeInvoker (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:1664:29)
    at fireToListeners (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\Fluid.js:1106:68)
    at fluid.makeEventFirer.that.fire (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\Fluid.js:1205:24)
    at gpii.request.flowManager.fireOnMatch (E:\source\gits\gpii\node_modules\universal\gpii\node_modules\flowManager\src\FlowManagerUtilities.js:145:20)
    at invokeInvoker (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:1664:29)
    at fireToListeners (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\Fluid.js:1106:68)
    at Object.fluid.makeEventFirer.that.fire (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\Fluid.js:1205:24)
    at Array.gpii.matchMakerFramework.matchMakerDispatcher [as 0] (E:\source\gits\gpii\node_modules\universal\gpii\node_modules\matchMakerFramework\src\MatchMakerFramework.js:91:19)
    at Object.fluid.promise.that.complete (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidPromises.js:65:25)
    at fluid.promise.that.resolve (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidPromises.js:49:22)
    at Object.fluid.promise.that.then (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidPromises.js:31:21)
    at Function.fluid.promise.follow (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidPromises.js:83:16)
    at Array.kettle.dataSource.set [as 0] (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\lib\dataSource.js:220:31)
    at Object.fluid.promise.that.complete (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidPromises.js:65:25)
    at Object.fluid.promise.that.resolve (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidPromises.js:49:22)
    at onEnd (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\lib\dataSource.js:325:33)
    at applyCallback (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\lib\utils.js:57:37)
    at fluid.withEnvironment (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:1880:20)
    at Object.fluid.tryCatch (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\Fluid.js:219:24)
    at Object.fluid.withEnvironment (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:1875:22)
    at IncomingMessage.wrapCallback (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\lib\utils.js:54:30)
    at IncomingMessage.EventEmitter.emit (events.js:115:20)
    at IncomingMessage._emitEnd (http.js:366:10)
    at HTTPParser.parserOnMessageComplete [as onMessageComplete] (http.js:149:23)
    at Socket.socketOnData [as ondata] (http.js:1366:20)
    at TCP.onread (net.js:402:27)
Current request: { typeName: 'kettle.requests.request.http',
  id: '9wrq5kv4-609',
  destroy: [Function],
  options: 
   { gradeNames: 
      [ 'kettle.requests.request.evented',
        'fluid.eventedComponent',
        'fluid.littleComponent',
        'kettle.requests.request.http',
        'kettle.requests.request',
        'fluid.applyGradeLinkage',
        '{requests}.eventedRequestGrade',
        'autoInit' ],
     req: 
      { socket: [Object],
        connection: [Object],
        httpVersion: '1.1',
        complete: true,
        headers: [Object],
        trailers: {},
        readable: false,
        _paused: false,
        _pendings: [],
        _endEmitted: true,
        url: '/user/testUser1/login',
        method: 'GET',
        statusCode: null,
        client: [Object],
        httpVersionMajor: 1,
        httpVersionMinor: 1,
        upgrade: false,
        originalUrl: '/user/testUser1/login',
        _parsedUrl: [Object],
        query: {},
        res: [Object],
        next: [Function: next],
        fluidRequest: [Circular],
        body: {},
        _route_index: 6,
        route: [Object],
        params: [Object] },
     res: 
      { output: [],
        outputEncodings: [],
        writable: true,
        _last: false,
        chunkedEncoding: false,
        shouldKeepAlive: false,
        useChunkedEncodingByDefault: true,
        sendDate: true,
        _hasBody: true,
        _trailer: '',
        finished: false,
        socket: [Object],
        connection: [Object],
        _events: [Object],
        _headers: [Object],
        _headerNames: [Object],
        req: [Object],
        locals: [Function: locals] },
     next: [Function: next],
     events: 
      { onCORS: null,
        onBodyParser: null,
        onCreate: null,
        onAttach: null,
        onClear: null,
        onDestroy: null,
        afterDestroy: null,
        handle: null,
        onRequestEnd: null,
        onError: null,
        onSuccess: null },
     listeners: 
      { onCreate: [Object],
        onError: [Object],
        onSuccess: [Object],
        onAttach: [Object],
        onCORS: [Object],
        onBodyParser: [Object] },
     argumentMap: { options: 0 },
     members: 
      { req: '{that}.options.req',
        res: '{that}.options.res',
        next: '{that}.options.next',
        requestPromise: [Object] },
     invokers: 
      { onErrorHandler: [Object],
        onSuccessHandler: [Object],
        ensureResCompleted: [Object],
        attachFluidRequest: [Object],
        proceed: [Object] },
     components: { handler: [Object] } },
  nickName: 'http',
  events: 
   { onCORS: 
      { eventId: '9wrq5kv4-610',
        name: 'onCORS of component with typename kettle.requests.request.http and id 9wrq5kv4-609',
        ownerId: '9wrq5kv4-609',
        typeName: 'fluid.event.firer',
        destroy: [Function],
        addListener: [Function],
        removeListener: [Function],
        fireToListeners: [Function],
        fire: [Function],
        listeners: [Object],
        byId: [Object],
        sortedListeners: [Object] },
     onBodyParser: 
      { eventId: '9wrq5kv4-611',
        name: 'onBodyParser of component with typename kettle.requests.request.http and id 9wrq5kv4-609',
        ownerId: '9wrq5kv4-609',
        typeName: 'fluid.event.firer',
        destroy: [Function],
        addListener: [Function],
        removeListener: [Function],
        fireToListeners: [Function],
        fire: [Function],
        listeners: [Object],
        byId: [Object],
        sortedListeners: [Object] },
     onCreate: 
      { eventId: '9wrq5kv4-612',
        name: 'onCreate of component with typename kettle.requests.request.http and id 9wrq5kv4-609',
        ownerId: '9wrq5kv4-609',
        typeName: 'fluid.event.firer',
        destroy: [Function],
        addListener: [Function],
        removeListener: [Function],
        fireToListeners: [Function],
        fire: [Function],
        listeners: [Object],
        byId: [Object],
        sortedListeners: [Object] },
     onAttach: 
      { eventId: '9wrq5kv4-613',
        name: 'onAttach of component with typename kettle.requests.request.http and id 9wrq5kv4-609',
        ownerId: '9wrq5kv4-609',
        typeName: 'fluid.event.firer',
        destroy: [Function],
        addListener: [Function],
        removeListener: [Function],
        fireToListeners: [Function],
        fire: [Function],
        listeners: [Object],
        byId: [Object],
        sortedListeners: [Object] },
     onClear: 
      { eventId: '9wrq5kv4-614',
        name: 'onClear of component with typename kettle.requests.request.http and id 9wrq5kv4-609',
        ownerId: '9wrq5kv4-609',
        typeName: 'fluid.event.firer',
        destroy: [Function],
        addListener: [Function],
        removeListener: [Function],
        fireToListeners: [Function],
        fire: [Function] },
     onDestroy: 
      { eventId: '9wrq5kv4-615',
        name: 'onDestroy of component with typename kettle.requests.request.http and id 9wrq5kv4-609',
        ownerId: '9wrq5kv4-609',
        typeName: 'fluid.event.firer',
        destroy: [Function],
        addListener: [Function],
        removeListener: [Function],
        fireToListeners: [Function],
        fire: [Function] },
     afterDestroy: 
      { eventId: '9wrq5kv4-616',
        name: 'afterDestroy of component with typename kettle.requests.request.http and id 9wrq5kv4-609',
        ownerId: '9wrq5kv4-609',
        typeName: 'fluid.event.firer',
        destroy: [Function],
        addListener: [Function],
        removeListener: [Function],
        fireToListeners: [Function],
        fire: [Function] },
     handle: 
      { eventId: '9wrq5kv4-617',
        name: 'handle of component with typename kettle.requests.request.http and id 9wrq5kv4-609',
        ownerId: '9wrq5kv4-609',
        typeName: 'fluid.event.firer',
        destroy: [Function],
        addListener: [Function],
        removeListener: [Function],
        fireToListeners: [Function],
        fire: [Function],
        listeners: [Object],
        byId: [Object],
        sortedListeners: [Object] },
     onRequestEnd: 
      { eventId: '9wrq5kv4-618',
        name: 'onRequestEnd of component with typename kettle.requests.request.http and id 9wrq5kv4-609',
        ownerId: '9wrq5kv4-609',
        typeName: 'fluid.event.firer',
        destroy: [Function],
        addListener: [Function],
        removeListener: [Function],
        fireToListeners: [Function],
        fire: [Function] },
     onError: 
      { eventId: '9wrq5kv4-619',
        name: 'onError of component with typename kettle.requests.request.http and id 9wrq5kv4-609',
        ownerId: '9wrq5kv4-609',
        typeName: 'fluid.event.firer',
        destroy: [Function],
        addListener: [Function],
        removeListener: [Function],
        fireToListeners: [Function],
        fire: [Function],
        listeners: [Object],
        byId: [Object],
        sortedListeners: [Object] },
     onSuccess: 
      { eventId: '9wrq5kv4-620',
        name: 'onSuccess of component with typename kettle.requests.request.http and id 9wrq5kv4-609',
        ownerId: '9wrq5kv4-609',
        typeName: 'fluid.event.firer',
        destroy: [Function],
        addListener: [Function],
        removeListener: [Function],
        fireToListeners: [Function],
        fire: [Function],
        listeners: [Object],
        byId: [Object],
        sortedListeners: [Object] } },
  ensureResCompleted: { [Function: invokeInvoker] '$$fluid_guid': '9wrq5kv4-621' },
  attachFluidRequest: { [Function: invokeInvoker] '$$fluid_guid': '9wrq5kv4-622' },
  onErrorHandler: { [Function: invokeInvoker] '$$fluid_guid': '9wrq5kv4-623' },
  onSuccessHandler: { [Function: invokeInvoker] '$$fluid_guid': '9wrq5kv4-624' },
  proceed: { [Function: invokeInvoker] '$$fluid_guid': '9wrq5kv4-625' },
  req: 
   { socket: 
      { _handle: [Object],
        _pendingWriteReqs: 0,
        _flags: 0,
        _connectQueueSize: 0,
        destroyed: false,
        errorEmitted: false,
        bytesRead: 79,
        _bytesDispatched: 0,
        allowHalfOpen: true,
        writable: true,
        readable: true,
        server: [Object],
        _events: [Object],
        _idleTimeout: 120000,
        _idleNext: [Object],
        _idlePrev: [Object],
        _idleStart: Thu Nov 06 2014 20:21:38 GMT+0000 (GMT Standard Time),
        parser: [Object],
        ondata: [Function],
        onend: [Function],
        _httpMessage: [Object],
        _paused: false },
     connection: 
      { _handle: [Object],
        _pendingWriteReqs: 0,
        _flags: 0,
        _connectQueueSize: 0,
        destroyed: false,
        errorEmitted: false,
        bytesRead: 79,
        _bytesDispatched: 0,
        allowHalfOpen: true,
        writable: true,
        readable: true,
        server: [Object],
        _events: [Object],
        _idleTimeout: 120000,
        _idleNext: [Object],
        _idlePrev: [Object],
        _idleStart: Thu Nov 06 2014 20:21:38 GMT+0000 (GMT Standard Time),
        parser: [Object],
        ondata: [Function],
        onend: [Function],
        _httpMessage: [Object],
        _paused: false },
     httpVersion: '1.1',
     complete: true,
     headers: { host: 'localhost:8081', connection: 'close' },
     trailers: {},
     readable: false,
     _paused: false,
     _pendings: [],
     _endEmitted: true,
     url: '/user/testUser1/login',
     method: 'GET',
     statusCode: null,
     client: 
      { _handle: [Object],
        _pendingWriteReqs: 0,
        _flags: 0,
        _connectQueueSize: 0,
        destroyed: false,
        errorEmitted: false,
        bytesRead: 79,
        _bytesDispatched: 0,
        allowHalfOpen: true,
        writable: true,
        readable: true,
        server: [Object],
        _events: [Object],
        _idleTimeout: 120000,
        _idleNext: [Object],
        _idlePrev: [Object],
        _idleStart: Thu Nov 06 2014 20:21:38 GMT+0000 (GMT Standard Time),
        parser: [Object],
        ondata: [Function],
        onend: [Function],
        _httpMessage: [Object],
        _paused: false },
     httpVersionMajor: 1,
     httpVersionMinor: 1,
     upgrade: false,
     originalUrl: '/user/testUser1/login',
     _parsedUrl: 
      { pathname: '/user/testUser1/login',
        path: '/user/testUser1/login',
        href: '/user/testUser1/login' },
     query: {},
     res: 
      { output: [],
        outputEncodings: [],
        writable: true,
        _last: false,
        chunkedEncoding: false,
        shouldKeepAlive: false,
        useChunkedEncodingByDefault: true,
        sendDate: true,
        _hasBody: true,
        _trailer: '',
        finished: false,
        socket: [Object],
        connection: [Object],
        _events: [Object],
        _headers: [Object],
        _headerNames: [Object],
        req: [Circular],
        locals: [Function: locals] },
     next: [Function: next],
     fluidRequest: [Circular],
     body: {},
     _route_index: 6,
     route: 
      { path: '/user/:token/login',
        method: 'get',
        callbacks: [Object],
        keys: [Object],
        regexp: /^\/user\/(?:([^\/]+?))\/login\/?$/i,
        params: [Object] },
     params: [ token: 'testUser1' ] },
  res: 
   { output: [],
     outputEncodings: [],
     writable: true,
     _last: false,
     chunkedEncoding: false,
     shouldKeepAlive: false,
     useChunkedEncodingByDefault: true,
     sendDate: true,
     _hasBody: true,
     _trailer: '',
     finished: false,
     socket: 
      { _handle: [Object],
        _pendingWriteReqs: 0,
        _flags: 0,
        _connectQueueSize: 0,
        destroyed: false,
        errorEmitted: false,
        bytesRead: 79,
        _bytesDispatched: 0,
        allowHalfOpen: true,
        writable: true,
        readable: true,
        server: [Object],
        _events: [Object],
        _idleTimeout: 120000,
        _idleNext: [Object],
        _idlePrev: [Object],
        _idleStart: Thu Nov 06 2014 20:21:38 GMT+0000 (GMT Standard Time),
        parser: [Object],
        ondata: [Function],
        onend: [Function],
        _httpMessage: [Circular],
        _paused: false },
     connection: 
      { _handle: [Object],
        _pendingWriteReqs: 0,
        _flags: 0,
        _connectQueueSize: 0,
        destroyed: false,
        errorEmitted: false,
        bytesRead: 79,
        _bytesDispatched: 0,
        allowHalfOpen: true,
        writable: true,
        readable: true,
        server: [Object],
        _events: [Object],
        _idleTimeout: 120000,
        _idleNext: [Object],
        _idlePrev: [Object],
        _idleStart: Thu Nov 06 2014 20:21:38 GMT+0000 (GMT Standard Time),
        parser: [Object],
        ondata: [Function],
        onend: [Function],
        _httpMessage: [Circular],
        _paused: false },
     _events: 
      { finish: [Object],
        close: [Function: eventListener],
        end: [Function: eventListener],
        error: [Function: eventListener] },
     _headers: 
      { 'x-powered-by': 'Express',
        'access-control-allow-origin': 'undefined',
        'access-control-allow-credentials': 'true',
        'access-control-allow-methods': 'GET,OPTIONS',
        'access-control-allow-headers': 'X-Requested-With,Content-Type' },
     _headerNames: 
      { 'x-powered-by': 'X-Powered-By',
        'access-control-allow-origin': 'Access-Control-Allow-Origin',
        'access-control-allow-credentials': 'Access-Control-Allow-Credentials',
        'access-control-allow-methods': 'Access-Control-Allow-Methods',
        'access-control-allow-headers': 'Access-Control-Allow-Headers' },
     req: 
      { socket: [Object],
        connection: [Object],
        httpVersion: '1.1',
        complete: true,
        headers: [Object],
        trailers: {},
        readable: false,
        _paused: false,
        _pendings: [],
        _endEmitted: true,
        url: '/user/testUser1/login',
        method: 'GET',
        statusCode: null,
        client: [Object],
        httpVersionMajor: 1,
        httpVersionMinor: 1,
        upgrade: false,
        originalUrl: '/user/testUser1/login',
        _parsedUrl: [Object],
        query: {},
        res: [Circular],
        next: [Function: next],
        fluidRequest: [Circular],
        body: {},
        _route_index: 6,
        route: [Object],
        params: [Object] },
     locals: [Function: locals] },
  next: [Function: next],
  requestPromise: 
   { onResolve: [ [Function] ],
     onReject: [ [Function] ],
     then: [Function],
     resolve: [Function],
     reject: [Function],
     complete: [Function] },
  handlerContext: 'kettle.requests.request.handler.userLogin',
  handler: 
   { typeName: 'kettle.requests.request.handler',
     id: '9wrq5kv4-629',
     destroy: [Function],
     options: 
      { gradeNames: [Object],
        invokers: [Object],
        listeners: [Object],
        argumentMap: [Object],
        events: [Object] },
     nickName: 'handler',
     events: 
      { onSolutionsRegistry: [Object],
        onDevice: [Object],
        onToken: [Object],
        onPreferences: [Object],
        onMatch: [Object],
        onReadyForLifecycle: [Object],
        onReadyToMatch: [Object],
        onCreate: [Object],
        onAttach: [Object],
        onClear: [Object],
        onDestroy: [Object],
        afterDestroy: [Object] },
     getPreferences: { [Function: invokeInvoker] '$$fluid_guid': '9wrq5kv4-647' },
     getDevice: { [Function: invokeInvoker] '$$fluid_guid': '9wrq5kv4-648' },
     runMatchMakerFramework: { [Function: invokeInvoker] '$$fluid_guid': '9wrq5kv4-649' },
     getSolutions: { [Function: invokeInvoker] '$$fluid_guid': '9wrq5kv4-651' },
     fireOnMatch: { [Function: invokeInvoker] '$$fluid_guid': '9wrq5kv4-652' },
     runContextManager: { [Function: invokeInvoker] '$$fluid_guid': '9wrq5kv4-653' },
     startLifecycle: { [Function: invokeInvoker] '$$fluid_guid': '9wrq5kv4-654' },
     handle: [Function: invokeInvoker],
     onMatch: [Function: invokeInvoker],
     userToken: 'testUser1',
     userPreferences: { contexts: [Object] },
     userDevice: { solutions: [Object], OS: [Object] } } }
CLEARLISTENERS executing for shadow  { that: 
   { typeName: 'kettle.requests.request.handler',
     id: '9wrq5kv4-629',
     destroy: { __COMPONENT_DESTROYED__: true },
     options: 
      { gradeNames: [Object],
        invokers: [Object],
        listeners: [Object],
        argumentMap: [Object],
        events: [Object] },
     nickName: 'handler',
     events: 
      { onSolutionsRegistry: [Object],
        onDevice: [Object],
        onToken: [Object],
        onPreferences: [Object],
        onMatch: [Object],
        onReadyForLifecycle: [Object],
        onReadyToMatch: [Object],
        onCreate: [Object],
        onAttach: [Object],
        onClear: [Object],
        onDestroy: [Object],
        afterDestroy: [Object] },
     getPreferences: { [Function: invokeInvoker] '$$fluid_guid': '9wrq5kv4-647' },
     getDevice: { [Function: invokeInvoker] '$$fluid_guid': '9wrq5kv4-648' },
     runMatchMakerFramework: { [Function: invokeInvoker] '$$fluid_guid': '9wrq5kv4-649' },
     getSolutions: { [Function: invokeInvoker] '$$fluid_guid': '9wrq5kv4-651' },
     fireOnMatch: { [Function: invokeInvoker] '$$fluid_guid': '9wrq5kv4-652' },
     runContextManager: { [Function: invokeInvoker] '$$fluid_guid': '9wrq5kv4-653' },
     startLifecycle: { [Function: invokeInvoker] '$$fluid_guid': '9wrq5kv4-654' },
     handle: [Function: invokeInvoker],
     onMatch: [Function: invokeInvoker],
     userToken: 'testUser1',
     userPreferences: { contexts: [Object] },
     userDevice: { solutions: [Object], OS: [Object] } },
  path: 'tests.configuration.server.requests.request.handler',
  mergePolicy: 
   { gradeNames: { '*': [Object] },
     mergePolicy: { '*': [Object] },
     argumentMap: { '*': [Object] },
     components: { '*': [Object] },
     dynamicComponents: { '*': [Object] },
     members: { '*': [Object] },
     invokers: { '*': [Object] },
     events: { '*': [Object] },
     listeners: { '*': [Object] },
     modelListeners: { '*': [Object] },
     distributeOptions: { '*': [Object] },
     transformOptions: { '*': [Object] },
     preInitFunction: { '*': [Object] },
     postInitFunction: { '*': [Object] },
     finalInitFunction: { '*': [Object] } },
  contextHash: 
   { 'kettle.requests.request.handler.userLogin': true,
     userLogin: true,
     'fluid.littleComponent': true,
     littleComponent: true,
     'gpii.request.flowManager.token': true,
     token: true,
     'fluid.eventedComponent': true,
     eventedComponent: true,
     'kettle.requests.request.handler': true,
     handler: true,
     '{request}.handlerContext': true,
     handlerContext: true,
     'fluid.applyGradeLinkage': true,
     applyGradeLinkage: true,
     autoInit: true },
  mergeOptions: 
   { mergePolicy: 
      { gradeNames: [Object],
        mergePolicy: [Object],
        argumentMap: [Object],
        components: [Object],
        dynamicComponents: [Object],
        members: [Object],
        invokers: [Object],
        events: [Object],
        listeners: [Object],
        modelListeners: [Object],
        distributeOptions: [Object],
        transformOptions: [Object],
        preInitFunction: [Object],
        postInitFunction: [Object],
        finalInitFunction: [Object] },
     sources: [ [Object] ],
     target: 
      { gradeNames: [Object],
        invokers: [Object],
        listeners: [Object],
        argumentMap: [Object],
        events: [Object] },
     sourceStrategies: [ [Function] ],
     initter: [Function],
     strategy: [Function],
     mergeBlocks: [ [Object] ],
     updateBlocks: [Function],
     destroyValue: [Function],
     evaluateFully: true },
  invokerStrategy: { strategy: [Function], initter: [Function] },
  eventStrategyBlock: { strategy: [Function], initter: [Function] },
  memberStrategy: { strategy: [Function], initter: [Function] },
  getConfig: 
   { strategies: 
      [ [Function],
        [Function],
        [Function],
        [Function],
        [Function],
        [Function] ] },
  subcomponentLocal: {},
  listeners: 
   [ { event: [Object], listener: [Object] },
     { event: [Object], listener: [Object] },
     { event: [Object], listener: [Object] } ] }
Error
    at Object.fluid.clearListeners (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:760:25)
    at Object.fluid.instantiator.that.clearComponent (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:882:23)
    at fluid.instantiator.that.clearComponent (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:884:26)
    at Object.fluid.visitComponentChildren (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:35:17)
    at Object.fluid.instantiator.that.clearComponent (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:883:23)
    at Object.fluid.fabricateDestroyMethod (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:1053:26)
    at ServerResponse.eventListener (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\lib\request.js:197:22)
    at ServerResponse.EventEmitter.emit (events.js:115:20)
    at ServerResponse.OutgoingMessage._finish (http.js:836:8)
    at ServerResponse.OutgoingMessage.end (http.js:821:10)
    at ServerResponse.res.send (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\node_modules\express\lib\response.js:154:8)
    at ServerResponse.res.json (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\node_modules\express\lib\response.js:196:15)
    at ServerResponse.res.send (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\node_modules\express\lib\response.js:122:21)
    at kettle.requests.request.http.onErrorHandler (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\lib\request.js:212:13)
    at invokeInvoker (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:1664:29)
    at fireToListeners (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\Fluid.js:1106:68)
    at fluid.makeEventFirer.that.fire (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\Fluid.js:1205:24)
    at kettle.requests.eventHandler (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\lib\request.js:87:40)
    at Object.invoke (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:1623:25)
    at invokeInvoker (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:1650:32)
    at fireToListeners (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\Fluid.js:1106:68)
    at Object.fluid.makeEventFirer.that.fire (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\Fluid.js:1205:24)
    at gpii.request.flowManager.sessionAware.withSession (E:\source\gits\gpii\node_modules\universal\gpii\node_modules\flowManager\src\FlowManagerUtilities.js:154:28)
    at Object.invoke (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:1623:25)
    at Object.invokeInvoker [as withSession] (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:1650:32)
    at gpii.request.flowManager.onMatchUpdateHandler (E:\source\gits\gpii\node_modules\universal\gpii\node_modules\flowManager\src\UserUpdate.js:111:14)
    at invokeInvoker (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:1664:29)
    at fireToListeners (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\Fluid.js:1106:68)
    at fluid.makeEventFirer.that.fire (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\Fluid.js:1205:24)
    at gpii.request.flowManager.fireOnMatch (E:\source\gits\gpii\node_modules\universal\gpii\node_modules\flowManager\src\FlowManagerUtilities.js:145:20)
    at invokeInvoker (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:1664:29)
    at fireToListeners (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\Fluid.js:1106:68)
    at Object.fluid.makeEventFirer.that.fire (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\Fluid.js:1205:24)
    at Array.gpii.matchMakerFramework.matchMakerDispatcher [as 0] (E:\source\gits\gpii\node_modules\universal\gpii\node_modules\matchMakerFramework\src\MatchMakerFramework.js:91:19)
    at Object.fluid.promise.that.complete (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidPromises.js:65:25)
    at fluid.promise.that.resolve (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidPromises.js:49:22)
    at Object.fluid.promise.that.then (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidPromises.js:31:21)
    at Function.fluid.promise.follow (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidPromises.js:83:16)
    at Array.kettle.dataSource.set [as 0] (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\lib\dataSource.js:220:31)
    at Object.fluid.promise.that.complete (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidPromises.js:65:25)
    at Object.fluid.promise.that.resolve (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidPromises.js:49:22)
    at onEnd (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\lib\dataSource.js:325:33)
    at applyCallback (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\lib\utils.js:57:37)
    at fluid.withEnvironment (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:1880:20)
    at Object.fluid.tryCatch (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\Fluid.js:219:24)
    at Object.fluid.withEnvironment (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:1875:22)
    at IncomingMessage.wrapCallback (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\lib\utils.js:54:30)
    at IncomingMessage.EventEmitter.emit (events.js:115:20)
    at IncomingMessage._emitEnd (http.js:366:10)
    at HTTPParser.parserOnMessageComplete [as onMessageComplete] (http.js:149:23)
    at Socket.socketOnData [as ondata] (http.js:1366:20)
    at TCP.onread (net.js:402:27)
shadow.listeners:  [
  {
    "event": {
      "eventId": "9wrq5kv4-636",
      "name": " [composite] onReadyToMatch of component with typename kettle.requests.request.handler and id 9wrq5kv4-629",
      "typeName": "fluid.event.firer",
      "listeners": {
        "kettle.requests.request.handler.runMatchMakerFramework": [
          {
            "namespace": "kettle.requests.request.handler.runMatchMakerFramework",
            "softNamespace": true,
            "priority": 0
          }
        ],
        "kettle.requests.request.handler.userLogin.recordMatch": [
          {
            "namespace": "kettle.requests.request.handler.userLogin.recordMatch",
            "softNamespace": true,
            "priority": 1
          }
        ]
      },
      "byId": {
        "9wrq5kv4-649": {
          "namespace": "kettle.requests.request.handler.runMatchMakerFramework",
          "softNamespace": true,
          "priority": 0
        },
        "9wrq5kv4-650": {
          "namespace": "kettle.requests.request.handler.userLogin.recordMatch",
          "softNamespace": true,
          "priority": 1
        }
      },
      "sortedListeners": [
        {
          "namespace": "kettle.requests.request.handler.runMatchMakerFramework",
          "softNamespace": true,
          "priority": 0
        },
        {
          "namespace": "kettle.requests.request.handler.userLogin.recordMatch",
          "softNamespace": true,
          "priority": 1
        }
      ],
      "destroyed": true
    }
  },
  {
    "event": {
      "eventId": "9wrq5kv4-636",
      "name": " [composite] onReadyToMatch of component with typename kettle.requests.request.handler and id 9wrq5kv4-629",
      "typeName": "fluid.event.firer",
      "listeners": {
        "kettle.requests.request.handler.runMatchMakerFramework": [
          {
            "namespace": "kettle.requests.request.handler.runMatchMakerFramework",
            "softNamespace": true,
            "priority": 0
          }
        ],
        "kettle.requests.request.handler.userLogin.recordMatch": [
          {
            "namespace": "kettle.requests.request.handler.userLogin.recordMatch",
            "softNamespace": true,
            "priority": 1
          }
        ]
      },
      "byId": {
        "9wrq5kv4-649": {
          "namespace": "kettle.requests.request.handler.runMatchMakerFramework",
          "softNamespace": true,
          "priority": 0
        },
        "9wrq5kv4-650": {
          "namespace": "kettle.requests.request.handler.userLogin.recordMatch",
          "softNamespace": true,
          "priority": 1
        }
      },
      "sortedListeners": [
        {
          "namespace": "kettle.requests.request.handler.runMatchMakerFramework",
          "softNamespace": true,
          "priority": 0
        },
        {
          "namespace": "kettle.requests.request.handler.userLogin.recordMatch",
          "softNamespace": true,
          "priority": 1
        }
      ],
      "destroyed": true
    }
  },
  {
    "event": {
      "eventId": "9wrq5kv4-201",
      "name": "onMatch of component with typename gpii.matchMakerFramework and id 9wrq5kv4-197",
      "ownerId": "9wrq5kv4-197",
      "typeName": "fluid.event.firer",
      "listeners": {
        "kettle.requests.request.handler.fireOnMatch": [
          {
            "namespace": "kettle.requests.request.handler.fireOnMatch",
            "softNamespace": true,
            "priority": 0
          },
          {
            "namespace": "kettle.requests.request.handler.fireOnMatch",
            "softNamespace": true,
            "priority": 1
          }
        ]
      },
      "byId": {
        "9wrq5kv4-606": {
          "namespace": "kettle.requests.request.handler.fireOnMatch",
          "softNamespace": true,
          "priority": 0
        },
        "9wrq5kv4-652": {
          "namespace": "kettle.requests.request.handler.fireOnMatch",
          "softNamespace": true,
          "priority": 1
        }
      },
      "sortedListeners": [
        {
          "namespace": "kettle.requests.request.handler.fireOnMatch",
          "softNamespace": true,
          "priority": 0
        },
        {
          "namespace": "kettle.requests.request.handler.fireOnMatch",
          "softNamespace": true,
          "priority": 1
        }
      ]
    }
  }
]
CLEARLISTENERS REMOVING LISTENER  9wrq5kv4-649
CLEARLISTENERS REMOVING LISTENER  9wrq5kv4-650
CLEARLISTENERS REMOVING LISTENER  9wrq5kv4-652
shadow.listeners:  [
  {
    "event": {
      "eventId": "9wrq5kv4-636",
      "name": " [composite] onReadyToMatch of component with typename kettle.requests.request.handler and id 9wrq5kv4-629",
      "typeName": "fluid.event.firer",
      "listeners": {},
      "byId": {},
      "sortedListeners": [],
      "destroyed": true
    }
  },
  {
    "event": {
      "eventId": "9wrq5kv4-636",
      "name": " [composite] onReadyToMatch of component with typename kettle.requests.request.handler and id 9wrq5kv4-629",
      "typeName": "fluid.event.firer",
      "listeners": {},
      "byId": {},
      "sortedListeners": [],
      "destroyed": true
    }
  },
  {
    "event": {
      "eventId": "9wrq5kv4-201",
      "name": "onMatch of component with typename gpii.matchMakerFramework and id 9wrq5kv4-197",
      "ownerId": "9wrq5kv4-197",
      "typeName": "fluid.event.firer",
      "listeners": {
        "kettle.requests.request.handler.fireOnMatch": [
          {
            "namespace": "kettle.requests.request.handler.fireOnMatch",
            "softNamespace": true,
            "priority": 0
          }
        ]
      },
      "byId": {
        "9wrq5kv4-606": {
          "namespace": "kettle.requests.request.handler.fireOnMatch",
          "softNamespace": true,
          "priority": 0
        }
      },
      "sortedListeners": [
        {
          "namespace": "kettle.requests.request.handler.fireOnMatch",
          "softNamespace": true,
          "priority": 0
        }
      ]
    }
  }
]
20:21:38.417:  ASSERTION FAILED: Cannot resolve reference {that}.events.onMatch from component { typeName: "kettle.requests.request.handler" gradeNames: ["kettle.requests.request.handler.userLogin","gpii.request.flowManager.token","kettle.requests.request.handler","{request}.handlerContext","fluid.applyGradeLinkage"] id: 9wrq5kv4-629} which has been destroyed{
    "type": "expandContextValue",
    "message": "expanding context value %source held at path %path",
    "args": {
        "source": "{that}.events.onMatch",
        "path": ""
    },
    "time": 1415305298417
}{
    "type": "resolveContextValue",
    "message": "resolving context value %string",
    "args": {
        "string": "{that}.events.onMatch"
    },
    "time": 1415305298417
}
20:21:38.417:  ASSERTION FAILED: Cannot resolve reference {that}.events.onMatch from component { typeName: "kettle.requests.request.handler" gradeNames: ["kettle.requests.request.handler.userLogin","gpii.request.flowManager.token","kettle.requests.request.handler","{request}.handlerContext","fluid.applyGradeLinkage"] id: 9wrq5kv4-629} which has been destroyed
20:21:38.417:  Current activity: 
    while resolving context value {that}.events.onMatch
    while expanding context value {that}.events.onMatch held at path ""
20:21:38.418:  FATAL ERROR: Uncaught exception: Object Cannot resolve reference {that}.events.onMatch from component { typeName: "kettle.requests.request.handler" gradeNames: ["kettle.requests.request.handler.userLogin","gpii.request.flowManager.token","kettle.requests.request.handler","{request}.handlerContext","fluid.applyGradeLinkage"] id: 9wrq5kv4-629} which has been destroyed has no method 'Assertion failure - check console for details'
TypeError: Object Cannot resolve reference {that}.events.onMatch from component { typeName: "kettle.requests.request.handler" gradeNames: ["kettle.requests.request.handler.userLogin","gpii.request.flowManager.token","kettle.requests.request.handler","{request}.handlerContext","fluid.applyGradeLinkage"] id: 9wrq5kv4-629} which has been destroyed has no method 'Assertion failure - check console for details'
    at Object.fluid.builtinFail (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\Fluid.js:163:69)
    at kettle.utils.failureHandler (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\lib\utils.js:98:15)
    at Object.fluid.fail (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\Fluid.js:184:13)
    at Object.fluid.makeStackFetcher.fetcher (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:726:23)
    at fetch (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:2053:32)
    at Object.fluid.resolveContextValue (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:2061:20)
    at Object.fluid.expandSource (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:2158:34)
    at Object.fluid.makeExpandOptions.options.expandSource (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:2234:26)
    at Object.fluid.makeExpandOptions (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:2249:42)
    at Object.fluid.expand (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:2259:35)
    at Object.fluid.embodyDemands (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:1226:37)
    at invokeInvoker (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:1655:40)
    at fireToListeners (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\Fluid.js:1106:68)
    at Object.fluid.makeEventFirer.that.fire (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\Fluid.js:1205:24)
    at Array.gpii.matchMakerFramework.matchMakerDispatcher [as 0] (E:\source\gits\gpii\node_modules\universal\gpii\node_modules\matchMakerFramework\src\MatchMakerFramework.js:91:19)
    at Object.fluid.promise.that.complete (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidPromises.js:65:25)
    at fluid.promise.that.resolve (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidPromises.js:49:22)
    at Object.fluid.promise.that.then (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidPromises.js:31:21)
    at Function.fluid.promise.follow (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidPromises.js:83:16)
    at Array.kettle.dataSource.set [as 0] (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\lib\dataSource.js:220:31)
    at Object.fluid.promise.that.complete (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidPromises.js:65:25)
    at Object.fluid.promise.that.resolve (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidPromises.js:49:22)
    at onEnd (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\lib\dataSource.js:325:33)
    at applyCallback (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\lib\utils.js:57:37)
    at fluid.withEnvironment (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:1880:20)
    at Object.fluid.tryCatch (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\Fluid.js:219:24)
    at Object.fluid.withEnvironment (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:1875:22)
    at IncomingMessage.wrapCallback (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\lib\utils.js:54:30)
    at IncomingMessage.EventEmitter.emit (events.js:115:20)
    at IncomingMessage._emitEnd (http.js:366:10)
    at HTTPParser.parserOnMessageComplete [as onMessageComplete] (http.js:149:23)
    at Socket.socketOnData [as ondata] (http.js:1366:20)
    at TCP.onread (net.js:402:27)
20:21:38.423:  jq: FAIL: Module "update tests" Test name "Flow Manager update tests" - Message: Unexpected failure in test case (see following log for more details): Object Cannot resolve reference {that}.events.onMatch from component { typeName: "kettle.requests.request.handler" gradeNames: ["kettle.requests.request.handler.userLogin","gpii.request.flowManager.token","kettle.requests.request.handler","{request}.handlerContext","fluid.applyGradeLinkage"] id: 9wrq5kv4-629} which has been destroyed has no method 'Assertion failure - check console for details'
20:21:38.423:  jq: Source:     at kettle.test.handleUncaughtException (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\test\utils\js\KettleTestUtils.js:32:15)
    at fireToListeners (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\Fluid.js:1106:68)
    at Object.fluid.makeEventFirer.that.fire (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\Fluid.js:1205:24)
    at process.onUncaughtException (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\module\fluid.js:94:35)
    at process.EventEmitter.emit (events.js:115:20)
20:21:38.425:  jq: FAIL: Module "update tests" Test name "Flow Manager update tests" - Message: Response is correct - at sequence position 6 of 19
20:21:38.425:  jq: Expected: User with token testUser1 was successfully logged in.
20:21:38.425:  jq: Actual: {
  "isError": true,
  "message": "Error handling request which required active session, but none was active"
}
20:21:38.425:  jq: Source:     at Object.jsUnitCompat.assertEquals (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\tests\test-core\jqUnit\js\jqUnit.js:127:19)
    at gpii.tests.flowManager.update.testLoginResponse (E:\source\gits\gpii\node_modules\universal\gpii\node_modules\flowManager\test\UpdateTests.js:71:12)
    at fluid.test.makeBinder.that.bind.wrapped (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\tests\test-core\utils\js\IoCTestUtils.js:313:26)
    at fireToListeners (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\Fluid.js:1106:68)
    at fluid.makeEventFirer.that.fire (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\Fluid.js:1205:24)
    at IncomingMessage.kettle.test.request.http.send.req (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\test\utils\js\KettleTestUtils.js:329:13)
    at IncomingMessage.EventEmitter.emit (events.js:115:20)
    at IncomingMessage._emitEnd (http.js:366:10)
     .... [output suppressed at 1024 chars - for more output, increase fluid.logObjectRenderChars]
20:21:38.426:  connecting socket.io to: ws://localhost:8081/update
20:21:38.428:  Invoked new XHR request: Error
    at Object.ioClient.util.request (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\test\utils\js\KettleTestUtils.js:195:45)
    at Socket.handshake (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\node_modules\socket.io-client\lib\socket.js:149:25)
    at Socket.connect (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\node_modules\socket.io-client\lib\socket.js:209:10)
    at new Socket (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\node_modules\socket.io-client\lib\socket.js:61:12)
    at Object.io.connect (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\node_modules\socket.io-client\lib\io.js:193:16)
    at kettle.test.request.io.connect (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\test\utils\js\KettleTestUtils.js:182:28)
    at Object.invokeInvoker [as connect] (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:1664:29)
    at kett .... [output suppressed at 1024 chars - for more output, increase fluid.logObjectRenderChars]
debug: client authorized
info: handshake authorized jw2k7iQDQItgrP-wxQE4
debug: setting request GET /socket.io/1/websocket/jw2k7iQDQItgrP-wxQE4
debug: set heartbeat interval for client jw2k7iQDQItgrP-wxQE4
debug: client authorized for 
debug: websocket writing 1::
debug: client authorized for /update
debug: websocket writing 1::/update
&&&&&&&&&&&&&&&&& FIRING SESSIONAWARE ONERROR FROM Error
    at gpii.request.flowManager.sessionAware.withSession (E:\source\gits\gpii\node_modules\universal\gpii\node_modules\flowManager\src\FlowManagerUtilities.js:151:81)
    at Object.invokeInvoker [as withSession] (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:1664:29)
    at gpii.request.flowManager.userUpdateHandle (E:\source\gits\gpii\node_modules\universal\gpii\node_modules\flowManager\src\UserUpdate.js:85:14)
    at invokeInvoker (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:1664:29)
    at fluid.withEnvironment (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:1880:20)
    at Object.fluid.tryCatch (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\Fluid.js:219:24)
    at fluid.withEnvironment (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:1875:22)
    at Object.fluid.event.invokeListener (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\Fluid.js:1052:25)
    at fluid.event.dispatchListener.togo (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:1722:36)
    at fireToListeners (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\Fluid.js:1106:68)
    at fluid.makeEventFirer.that.fire (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\Fluid.js:1205:24)
    at Object.fluid.fireEvent (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\Fluid.js:1219:24)
    at Object.fluid.initDependent (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:1316:15)
    at fluid.bindDeferredComponent (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:1337:23)
    at fireToListeners (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\Fluid.js:1106:68)
    at Object.fluid.makeEventFirer.that.fire (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\Fluid.js:1205:24)
    at kettle.requests.handleRequest (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\lib\request.js:76:31)
    at Object.invoke (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:1623:25)
    at invokeInvoker (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\FluidIoC.js:1650:32)
    at fireToListeners (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\Fluid.js:1106:68)
    at Object.fluid.makeEventFirer.that.fire (E:\source\gits\gpii\node_modules\universal\node_modules\infusion\src\framework\core\js\Fluid.js:1205:24)
    at Socket.onMessage (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\lib\server.io.js:106:54)
    at Socket.EventEmitter.emit [as $emit] (events.js:91:17)
    at SocketNamespace.handlePacket (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\node_modules\socket.io\lib\namespace.js:335:22)
    at Manager.onClientMessage (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\node_modules\socket.io\lib\manager.js:518:38)
    at WebSocket.Transport.onMessage (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\node_modules\socket.io\lib\transport.js:369:20)
    at Parser.<anonymous> (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\node_modules\socket.io\lib\transports\websocket\hybi-16.js:39:10)
    at Parser.EventEmitter.emit (events.js:88:17)
    at opcodeHandlers.1.finish (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\node_modules\socket.io\lib\transports\websocket\hybi-16.js:295:16)
    at Parser.opcodeHandlers.1.expectData [as expectHandler] (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\node_modules\socket.io\lib\transports\websocket\hybi-16.js:306:15)
    at Parser.add (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\node_modules\socket.io\lib\transports\websocket\hybi-16.js:482:24)
    at Parser.expect (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\node_modules\socket.io\lib\transports\websocket\hybi-16.js:519:10)
    at Parser.opcodeHandlers.1.expectData (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\node_modules\socket.io\lib\transports\websocket\hybi-16.js:305:18)
    at Parser.add (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\node_modules\socket.io\lib\transports\websocket\hybi-16.js:482:24)
    at Parser.expect (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\node_modules\socket.io\lib\transports\websocket\hybi-16.js:519:10)
    at opcodeHandlers.1.expectData (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\node_modules\socket.io\lib\transports\websocket\hybi-16.js:303:16)
    at opcodeHandlers.1 (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\node_modules\socket.io\lib\transports\websocket\hybi-16.js:320:9)
    at Parser.processPacket (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\node_modules\socket.io\lib\transports\websocket\hybi-16.js:553:8)
    at Parser.add (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\node_modules\socket.io\lib\transports\websocket\hybi-16.js:482:24)
    at Socket.WebSocket.onSocketConnect (E:\source\gits\gpii\node_modules\universal\node_modules\kettle\node_modules\socket.io\lib\transports\websocket\hybi-16.js:146:17)
    at Socket.EventEmitter.emit (events.js:88:17)
    at TCP.onread (net.js:395:14)
Current request: { typeName: 'kettle.requests.request.io',
  id: '9wrq5kv4-768',
  destroy: [Function],
  options: 
   { gradeNames: 
      [ 'kettle.requests.request.io',
        'kettle.requests.request',
        'fluid.eventedComponent',
        'fluid.littleComponent',
        'fluid.applyGradeLinkage',
        'autoInit' ],
     socket: 
      { id: 'jw2k7iQDQItgrP-wxQE4',
        namespace: [Object],
        manager: [Object],
        disconnected: false,
        ackPackets: 0,
        acks: {},
        flags: [Object],
        readable: true,
        store: [Object],
        _events: [Object],
        fluidRequest: [Circular] },
     data: { 'test.dummy': [Object] },
     send: [Function: ack],
     members: 
      { socket: '{that}.options.socket',
        data: '{that}.options.data',
        send: '{that}.options.send' },
     listeners: { onCreate: [Object], onError: [Object], onSuccess: [Object] },
     invokers: 
      { onErrorHandler: [Object],
        onSuccessHandler: [Object],
        ensureResCompleted: [Object],
        attachFluidRequest: [Object] },
     components: { handler: [Object] },
     events: 
      { handle: null,
        onRequestEnd: null,
        onError: null,
        onSuccess: null,
        onCreate: null,
        onAttach: null,
        onClear: null,
        onDestroy: null,
        afterDestroy: null },
     argumentMap: { options: 0 } },
  nickName: 'io',
  events: 
   { handle: 
      { eventId: '9wrq5kv4-769',
        name: 'handle of component with typename kettle.requests.request.io and id 9wrq5kv4-768',
        ownerId: '9wrq5kv4-768',
        typeName: 'fluid.event.firer',
        destroy: [Function],
        addListener: [Function],
        removeListener: [Function],
        fireToListeners: [Function],
        fire: [Function],
        listeners: [Object],
        byId: [Object],
        sortedListeners: [Object] },
     onRequestEnd: 
      { eventId: '9wrq5kv4-770',
        name: 'onRequestEnd of component with typename kettle.requests.request.io and id 9wrq5kv4-768',
        ownerId: '9wrq5kv4-768',
        typeName: 'fluid.event.firer',
        destroy: [Function],
        addListener: [Function],
        removeListener: [Function],
        fireToListeners: [Function],
        fire: [Object] },
     onError: 
      { eventId: '9wrq5kv4-771',
        name: 'onError of component with typename kettle.requests.request.io and id 9wrq5kv4-768',
        ownerId: '9wrq5kv4-768',
        typeName: 'fluid.event.firer',
        destroy: [Function],
        addListener: [Function],
        removeListener: [Function],
        fireToListeners: [Function],
        fire: [Function],
        listeners: [Object],
        byId: [Object],
        sortedListeners: [Object] },
     onSuccess: 
      { eventId: '9wrq5kv4-772',
        name: 'onSuccess of component with typename kettle.requests.request.io and id 9wrq5kv4-768',
        ownerId: '9wrq5kv4-768',
        typeName: 'fluid.event.firer',
        destroy: [Function],
        addListener: [Function],
        removeListener: [Function],
        fireToListeners: [Function],
        fire: [Function],
        listeners: [Object],
        byId: [Object],
        sortedListeners: [Object] },
     onCreate: 
      { eventId: '9wrq5kv4-773',
        name: 'onCreate of component with typename kettle.requests.request.io and id 9wrq5kv4-768',
        ownerId: '9wrq5kv4-768',
        typeName: 'fluid.event.firer',
        destroy: [Function],
        addListener: [Function],
        removeListener: [Function],
        fireToListeners: [Function],
        fire: [Function],
        listeners: [Object],
        byId: [Object],
        sortedListeners: [Object] },
     onAttach: 
      { eventId: '9wrq5kv4-774',
        name: 'onAttach of component with typename kettle.requests.request.io and id 9wrq5kv4-768',
        ownerId: '9wrq5kv4-768',
        typeName: 'fluid.event.firer',
        destroy: [Function],
        addListener: [Function],
        removeListener: [Function],
        fireToListeners: [Function],
        fire: [Function] },
     onClear: 
      { eventId: '9wrq5kv4-775',
        name: 'onClear of component with typename kettle.requests.request.io and id 9wrq5kv4-768',
        ownerId: '9wrq5kv4-768',
        typeName: 'fluid.event.firer',
        destroy: [Function],
        addListener: [Function],
        removeListener: [Function],
        fireToListeners: [Function],
        fire: [Function] },
     onDestroy: 
      { eventId: '9wrq5kv4-776',
        name: 'onDestroy of component with typename kettle.requests.request.io and id 9wrq5kv4-768',
        ownerId: '9wrq5kv4-768',
        typeName: 'fluid.event.firer',
        destroy: [Function],
        addListener: [Function],
        removeListener: [Function],
        fireToListeners: [Function],
        fire: [Function] },
     afterDestroy: 
      { eventId: '9wrq5kv4-777',
        name: 'afterDestroy of component with typename kettle.requests.request.io and id 9wrq5kv4-768',
        ownerId: '9wrq5kv4-768',
        typeName: 'fluid.event.firer',
        destroy: [Function],
        addListener: [Function],
        removeListener: [Function],
        fireToListeners: [Function],
        fire: [Function] } },
  ensureResCompleted: { [Function: invokeInvoker] '$$fluid_guid': '9wrq5kv4-778' },
  attachFluidRequest: { [Function: invokeInvoker] '$$fluid_guid': '9wrq5kv4-779' },
  onErrorHandler: { [Function: invokeInvoker] '$$fluid_guid': '9wrq5kv4-780' },
  onSuccessHandler: { [Function: invokeInvoker] '$$fluid_guid': '9wrq5kv4-783' },
  socket: 
   { id: 'jw2k7iQDQItgrP-wxQE4',
     namespace: 
      { manager: [Object],
        name: '/update',
        sockets: [Object],
        auth: false,
        flags: [Object],
        _events: [Object] },
     manager: 
      { server: [Object],
        namespaces: [Object],
        sockets: [Object],
        _events: [Object],
        settings: [Object],
        handshaken: [Object],
        connected: [Object],
        open: [Object],
        closed: {},
        rooms: [Object],
        roomClients: [Object],
        oldListeners: [Object],
        sequenceNumber: -2033909448,
        gc: [Object] },
     disconnected: false,
     ackPackets: 0,
     acks: {},
     flags: { endpoint: '/update', room: '' },
     readable: true,
     store: { store: [Object], id: 'jw2k7iQDQItgrP-wxQE4', data: {} },
     _events: 
      { error: [Function],
        message: [Function: onMessage],
        disconnect: [Function] },
     fluidRequest: [Circular] },
  data: { 'test.dummy': { settings: [Object] } },
  send: [Function: ack],
  handlerContext: 'kettle.requests.request.handler.userUpdate',
  handler: 
   { typeName: 'kettle.requests.request.handler',
     id: '9wrq5kv4-785',
     destroy: [Function],
     options: 
      { gradeNames: [Object],
        invokers: [Object],
        listeners: [Object],
        argumentMap: [Object],
        events: [Object] },
     nickName: 'handler',
     events: 
      { onSolutionsRegistry: [Object],
        onDevice: [Object],
        onToken: [Object],
        onPreferences: [Object],
        onMatch: [Object],
        onReadyForLifecycle: [Object],
        onReadyToMatch: [Object],
        onCreate: [Object],
        onAttach: [Object],
        onClear: [Object],
        onDestroy: [Object],
        afterDestroy: [Object] },
     getPreferences: { [Function: invokeInvoker] '$$fluid_guid': '9wrq5kv4-803' },
     runMatchMakerFramework: { [Function: invokeInvoker] '$$fluid_guid': '9wrq5kv4-804' },
     getSolutions: { [Function: invokeInvoker] '$$fluid_guid': '9wrq5kv4-805' },
     fireOnMatch: { [Function: invokeInvoker] '$$fluid_guid': '9wrq5kv4-806' },
     onMatchHandler: { [Function: invokeInvoker] '$$fluid_guid': '9wrq5kv4-807' },
     handle: [Function: invokeInvoker],
     getActiveSessionTokens: [Function: invokeInvoker],
     withSession: [Function: invokeInvoker],
     onMatch: [Function: invokeInvoker] } }
debug: websocket writing 5::/update:{"name":"error","args":[{"isError":true,"message":"Error handling request which required active session, but none was active"}]}
20:21:43.436:  Test case listener has not responded after 5000ms - at sequence pos 8 of 19 sequence element {
    "event": "{updateRequest}.events.onComplete",
    "listener": "gpii.tests.flowManager.update.testFirstUpdateRequest"
} of fixture Flow Manager update tests