code: public <T> Future<Boolean> push(String k, T value) {
      Future<Boolean> rv = null;
      while (rv == null) {
        try {
          rv = client.set(k, expiration, value);
        } catch (IllegalStateException ex) {
          // Need to slow down a bit when we start getting rejections.
          try {
            if (rv != null) {
              rv.get(250, TimeUnit.MILLISECONDS);
            } else {
              Thread.sleep(250);
            }
          } catch (InterruptedException ie) {
            Thread.currentThread().interrupt();
          } catch (Exception e2) {
            // Ignore exceptions here. We're just trying to slow
            // down input.
          }
        }
  
      }
      return rv;
    }
docs: Push a value into the cache.
  
  This is a wrapper around set that throttles and retries on full queues.
  
  @param <T> the type being stored
  @param k the key
  @param value the value
  @return the future representing the stored data