Quando uma biblioteca JavaScript carregada dinamicamente se torna disponível?

Eu escrevi biblioteca JavaScript para usarFileSaver.js e suas bibliotecas associadas. No entanto, eu não quero sempre carregar FileSaver.js sempre que alguém quiser usar minha biblioteca. E eu não quero forçá-los a carregar todas as várias bibliotecas JavaScript relacionadas ao FileSaver comscript tags-se (ou até mesmo carregar um dos meus que faria isso).

Em vez disso, o que eu prefiro é algo assim. Quando eles chamam meucreateImage função, primeiro faz o seguinte:

function createImage(image, name) {
  if (typeof(saveAs) !== 'function') {
    var element = document.createElement('script');
    element.async = false;
    element.src = 'FileSaver.js';
    element.type = 'text/javascript';
    (document.getElementsByTagName('head')[0]||document.body).appendChild(element);
  }
  // now do the saveImage code
}

O problema é, após o acima, osaveAs função ainda não está definida. É sódepois de minhacreateImage completa é osaveAs função finalmente definida.