#20 - used a WeakHashMap to keep a parser iterator in memory so that
multiple invoke() calls could come before readResponse() calls