code: public void read(final String filename, final AsyncResultHandler<String> handler) {
          isFresh(filename, new Handler<Boolean>() {
              @Override
              public void handle(Boolean fresh) {
                  if (fresh) {
                      String cachedValue = getFileFromCache(filename);
                      if (cachedValue != null) {
                          handler.handle(new YokeAsyncResult<>(null, cachedValue));
                          return;
                      }
                  }
                  // either fresh is false or cachedValue is null
                  loadToCache(filename, new Handler<Throwable>() {
                      @Override
                      public void handle(Throwable error) {
                          if (error != null) {
                              handler.handle(new YokeAsyncResult<String>(error, null));
                              return;
                          }
                          // no error
                          handler.handle(new YokeAsyncResult<>(null, getFileFromCache(filename)));
                      }
                  });
              }
          });
      }
docs: Loads a resource from the filesystem into a string.
  
  Verifies if the file last modified date is newer than on the cache
  if it is loads into a string
  returns the string or the cached value
  
  @param filename File to read
  @param handler Async handler