From 4f80484adcbafbc1824146f3a18e04c43b8410c1 Mon Sep 17 00:00:00 2001 From: Lenny Date: Wed, 8 Oct 2025 14:25:52 -0400 Subject: [PATCH] fix(storage): use backward compatible return type in download function --- .../src/packages/BlobDownloadBuilder.ts | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/packages/core/storage-js/src/packages/BlobDownloadBuilder.ts b/packages/core/storage-js/src/packages/BlobDownloadBuilder.ts index 05ea77790..6f953336f 100644 --- a/packages/core/storage-js/src/packages/BlobDownloadBuilder.ts +++ b/packages/core/storage-js/src/packages/BlobDownloadBuilder.ts @@ -2,7 +2,10 @@ import { isStorageError } from '../lib/errors' import { DownloadResult } from '../lib/types' import StreamDownloadBuilder from './StreamDownloadBuilder' -export default class BlobDownloadBuilder implements PromiseLike> { +export default class BlobDownloadBuilder implements Promise> { + readonly [Symbol.toStringTag]: string = 'BlobDownloadBuilder' + private promise: Promise> | null = null + constructor( private downloadFn: () => Promise, private shouldThrowOnError: boolean @@ -16,7 +19,24 @@ export default class BlobDownloadBuilder implements PromiseLike) => TResult1 | PromiseLike) | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null ): Promise { - return this.execute().then(onfulfilled, onrejected) + return this.getPromise().then(onfulfilled, onrejected) + } + + catch( + onrejected?: ((reason: any) => TResult | PromiseLike) | null + ): Promise | TResult> { + return this.getPromise().catch(onrejected) + } + + finally(onfinally?: (() => void) | null): Promise> { + return this.getPromise().finally(onfinally) + } + + private getPromise(): Promise> { + if (!this.promise) { + this.promise = this.execute() + } + return this.promise } private async execute(): Promise> {