docs: function(actionType, threadId, uniqueId) {
                  switch (actionType) {
  
                      case chatMessageVOTypes.DELIVERY:
                          if (threadCallbacks[threadId]) {
                              var lastThreadCallbackIndex = Object.keys(threadCallbacks[threadId])
                                  .indexOf(uniqueId);
                              if (lastThreadCallbackIndex !== undefined) {
                                  while (lastThreadCallbackIndex > -1) {
                                      var tempUniqueId = Object.entries(threadCallbacks[threadId])[lastThreadCallbackIndex][0];
                                      if (sendMessageCallbacks[tempUniqueId] && sendMessageCallbacks[tempUniqueId].onDeliver) {
                                          if (threadCallbacks[threadId][tempUniqueId] && threadCallbacks[threadId][tempUniqueId].onSent) {
                                              sendMessageCallbacks[tempUniqueId].onDeliver(
                                                  {
                                                      uniqueId: tempUniqueId
                                                  });
                                              delete(sendMessageCallbacks[tempUniqueId].onDeliver);
                                              threadCallbacks[threadId][tempUniqueId].onDeliver = true;
                                          }
                                      }
  
                                      lastThreadCallbackIndex -= 1;
                                  }
                              }
                          }
                          break;
  
                      case chatMessageVOTypes.SEEN:
                          if (threadCallbacks[threadId]) {
                              var lastThreadCallbackIndex = Object.keys(threadCallbacks[threadId])
                                  .indexOf(uniqueId);
                              if (lastThreadCallbackIndex !== undefined) {
                                  while (lastThreadCallbackIndex > -1) {
                                      var tempUniqueId = Object.entries(threadCallbacks[threadId])[lastThreadCallbackIndex][0];
  
                                      if (sendMessageCallbacks[tempUniqueId] && sendMessageCallbacks[tempUniqueId].onSeen) {
                                          if (threadCallbacks[threadId][tempUniqueId] && threadCallbacks[threadId][tempUniqueId].onSent) {
                                              if (!threadCallbacks[threadId][tempUniqueId].onDeliver) {
                                                  sendMessageCallbacks[tempUniqueId].onDeliver(
                                                      {
                                                          uniqueId: tempUniqueId
                                                      });
                                                  delete(sendMessageCallbacks[tempUniqueId].onDeliver);
                                                  threadCallbacks[threadId][tempUniqueId].onDeliver = true;
                                              }
  
                                              sendMessageCallbacks[tempUniqueId].onSeen(
                                                  {
                                                      uniqueId: tempUniqueId
                                                  });
  
                                              delete(sendMessageCallbacks[tempUniqueId].onSeen);
                                              threadCallbacks[threadId][tempUniqueId].onSeen = true;
  
                                              if (threadCallbacks[threadId][tempUniqueId].onSent &&
                                                  threadCallbacks[threadId][tempUniqueId].onDeliver &&
                                                  threadCallbacks[threadId][tempUniqueId].onSeen) {
                                                  delete threadCallbacks[threadId][tempUniqueId];
                                                  delete sendMessageCallbacks[tempUniqueId];
                                              }
                                          }
                                      }
  
                                      lastThreadCallbackIndex -= 1;
                                  }
                              }
                          }
                          break;
  
                      default:
                          break;
                  }
              }