| 83 | // ============================================================== |
| 84 | |
| 85 | function wrapWithDefer<T>( |
| 86 | asyncFn: (options: CrawlFileSystemOptions<T>) => Promise<unknown[]>, |
| 87 | ) { |
| 88 | return { |
| 89 | defer: true, // important for async functions |
| 90 | fn(deferred: { resolve: () => void }) { |
| 91 | return asyncFn(options) |
| 92 | .catch(() => []) |
| 93 | .then((result: unknown[]) => { |
| 94 | if (result.length === 0) { |
| 95 | throw new Error(`Result length is ${result.length}`); |
| 96 | } else { |
| 97 | deferred.resolve(); |
| 98 | } |
| 99 | return void 0; |
| 100 | }); |
| 101 | }, |
| 102 | }; |
| 103 | } |