This won't work in cases where you have 'createProgram/linkProgram/linkProgram/linkProgram' - the second linkProgram will delete it, then the third will add it back as cachable. Instead, set the cacheable flag in createProgram and always delete in linkProgram.