     # the storage to destroy a session with the specified session ID.
     # The session may or may not exist. Please refer to the `Connect`.
     destory: (sid, callback) ->
-        this.emit "session-destroy", sid, callback
         assert _.isString qualified = @namespaced sid
         assert _.isObject(@redis), "no Redis client yet"
         message = "Redis session engine error at destroy"
-        success = "Destroying a Redis stored session %s"
-        logger.debug message.gray, try sid.underline
+        process = "Destroying a Redis stored session %s"
+        logger.debug process.grey, try sid.underline
         @redis.del qualified, (error, trailings...) ->
+            @emit "session-destroy", sid, callback
             logger.error message.red, error if error
             return callback.call this, error if error
             return callback.apply this, arguments

# make use of `RedisClient` and other wirings specific to framework.
# It is highly recommended to use this storage engine in production
# environments. Please refer to `plumbs` module for how to make use.
module.exports.RedisSession = class RedisSession extends Zombie

    # These declarations below are implantations of the abstracted
    # components by the means of the dynamic recomposition system.

    # abstract session store engine found in the standard Connect
    # shipment. This is necessary in order to inherit the default
    # implementations of some generic, engine agnostic methods.
    # Refer to the inherited class implementation for refernce.
    _.extend @prototype, connect.session.Store.prototype

    # Part of the session engine interface contract implemenetation.
