anchor.diff:                          if cmd.Header.ConnectionID <> this.ConnectionID then
                               log.error "TODO: ConnectionId doesn't match, throw exception"
   
  -                        let p = pendingReplies.[cmd.Header.AckSequence]
  -                        pendingReplies.TryRemove(cmd.Header.AckSequence) |> ignore
  -
  -                        if log.isEnabled Log.Level.Debug then
  -                            log.debug "Received Seq=%i on %s:%i (Queued=%i, Pending=%i)" cmd.Header.AckSequence host port queuedCommands.Count pendingReplies.Count
  -                                                               
  -                        match cmd.Status.Code with
  -                        | StatusCode.SUCCESS -> p.Set <| Success (cmd, value)
  -                        | _ -> p.Set <| Error (RemoteException (cmd.Status)) 
  +                        match resp.AuthenticationType with
  +                        | AuthenticationType.UNSOLICITEDSTATUS ->
  +                            unsolicitedStatus.Trigger cmd.Status
  +                        | _ ->
  +                            let p = pendingReplies.[cmd.Header.AckSequence]
  +                            pendingReplies.TryRemove(cmd.Header.AckSequence) |> ignore
  +
  +                            if log.isEnabled Log.Level.Debug then
  +                                log.debug "Received Seq=%i on %s:%i (Queued=%i, Pending=%i)" cmd.Header.AckSequence host port queuedCommands.Count pendingReplies.Count
  +                                                                   
  +                            match cmd.Status.Code with
  +                            | StatusCode.SUCCESS -> p.Set <| Success (cmd, value)
  +                            | _ -> p.Set <| Error (RemoteException (cmd.Status)) 
                       } 
   
       let handshake() = 
  
positive.code: 
      let pendingReplies = new System.Collections.Concurrent.ConcurrentDictionary<int64,Promise<Response>>()
  
      let sender = async {
                      while running do
  
  
negative.code:                                 if hmac <> resp.HmacAuthentication.Hmac then
                                      log.error "HMAC doesn't match" // TODO: Boom, invalid HMAC
                              | Hmac (identity, _) -> log.error "Identities don't match" // TODO: Boom, identities dont match 
                          | AuthenticationType.INVALID_AUTH_TYPE -> 
                              log.error "Ehh.. Invalid authentication status received."
                          | _ -> () // Nothing to check for the rest
  
                          let ms = new MemoryStream(resp.CommandBytes)
                          let cmd : Kinetic.Proto.Command = ProtoBuf.Serializer.Deserialize(ms)
  