* Creates or returns an existing promise that will yield as soon as the * extension has been loaded. * @param {!ExtensionHolderDef} holder * @return {!Promise<!ExtensionDef>} * @private
(holder)
| 574 | * @private |
| 575 | */ |
| 576 | waitFor_(holder) { |
| 577 | if (!holder.promise) { |
| 578 | if (holder.loaded) { |
| 579 | holder.promise = Promise.resolve(holder.extension); |
| 580 | } else if (holder.error) { |
| 581 | holder.promise = Promise.reject(holder.error); |
| 582 | } else { |
| 583 | const deferred = new Deferred(); |
| 584 | holder.promise = deferred.promise; |
| 585 | holder.resolve = deferred.resolve; |
| 586 | holder.reject = deferred.reject; |
| 587 | } |
| 588 | } |
| 589 | return holder.promise; |
| 590 | } |
| 591 | |
| 592 | /** |
| 593 | * Ensures that the script has already been injected in the page. |
no test coverage detected