Front end caching and pooling (bug 847703)

A little dirty but I `promise()` to make up for it.