     @on 'close', =>
       console.log "DISCONNECTED from #{name}"
       @_state = DISCONNECTED
+
+    @waitingCalls = []
+    @waitingPromises = []
+
   extractInfoFromWsEvent = (event)->
     {reason, code, wasClean, timestamp, type} = event
 


    KD.utils.wait 1000, =>
      @transport?.connect()

    @emit 'ready'

  tell: (rpcMethod, params, callback) ->

    { name } = @getOptions()

    console.log "TELL :: #{name}.#{rpcMethod}"

    @connect()  if not @_connectAttempted or @isDisconnected

    unless @invalid

      promise = new Promise (resolve, reject)=>

        (@waitForConnection [rpcMethod, [params], callback]).then (args)=>
          console.info "# CONNECTED TO #{name} SENDING #{rpcMethod}... "
          resolve @transport?.tell args...

      unless @_state is CONNECTED
        @waitingPromises.push promise

      promise

    else

      Promise.reject
        name    : "KiteInvalid"
