* Request the resource to be destroyed. The factory's destroy handler * will also be called. * * This should be called within an acquire() block as an alternative to release(). * * @param {Object} resource * The acquired resource to be destoyed.
(resource)
| 540 | * The acquired resource to be destoyed. |
| 541 | */ |
| 542 | destroy(resource) { |
| 543 | // check for an outstanding loan |
| 544 | const loan = this._resourceLoans.get(resource); |
| 545 | |
| 546 | if (loan === undefined) { |
| 547 | return this._Promise.reject( |
| 548 | new Error("Resource not currently part of this pool") |
| 549 | ); |
| 550 | } |
| 551 | |
| 552 | this._resourceLoans.delete(resource); |
| 553 | loan.resolve(); |
| 554 | const pooledResource = loan.pooledResource; |
| 555 | |
| 556 | pooledResource.deallocate(); |
| 557 | this._destroy(pooledResource); |
| 558 | |
| 559 | this._dispense(); |
| 560 | return this._Promise.resolve(); |
| 561 | } |
| 562 | |
| 563 | _addPooledResourceToAvailableObjects(pooledResource) { |
| 564 | pooledResource.idle(); |