@Override
 public void onTimer() {
   if (NetworkManager.getInstance().getState() != NetworkState.suspended) {
     Collection<ConnectionItem> reconnect = new ArrayList<ConnectionItem>();
     for (ConnectionThread connectionThread : managedConnections)
       if (connectionThread.getConnectionItem().getState().isConnected()
           // XMPPConnection can`t be null here
           && !connectionThread.getXMPPConnection().isAlive()) {
         LogManager.i(connectionThread.getConnectionItem(), "forceReconnect on checkAlive");
         reconnect.add(connectionThread.getConnectionItem());
       }
     for (ConnectionItem connection : reconnect) connection.forceReconnect();
   }
   long now = new Date().getTime();
   Iterator<NestedMap.Entry<RequestHolder>> iterator = requests.iterator();
   while (iterator.hasNext()) {
     NestedMap.Entry<RequestHolder> entry = iterator.next();
     if (entry.getValue().isExpired(now)) {
       entry.getValue().getListener().onTimeout(entry.getFirst(), entry.getSecond());
       iterator.remove();
     }
   }
 }