11import EventEmitter from 'node:events'
22import fs from 'node:fs'
33import fsp from 'node:fs/promises'
4- import http from 'node:http'
5- import https from 'node:https'
64import path from 'node:path'
75import process from 'node:process'
86import type { Readable , Writable } from 'node:stream'
7+ import { pipeline } from 'node:stream/promises'
98import tty from 'node:tty'
109import { promisify } from 'node:util'
10+ import got from 'got'
1111import { tryCatch } from '../alphalib/tryCatch.ts'
1212import type { StepsInput } from '../alphalib/types/template.ts'
1313import type { CreateAssemblyParams } from '../apiTypes.ts'
@@ -785,25 +785,17 @@ export default async function run(
785785 }
786786
787787 outputctl . debug ( `DOWNLOADING ${ stepResult . name } to ${ outPath } ` )
788- await new Promise < void > ( ( dlResolve , dlReject ) => {
789- const get = resultUrl . startsWith ( 'https' ) ? https . get : http . get
790- const req = get ( resultUrl , { signal : abortController . signal } , ( res ) => {
791- if ( res . statusCode !== 200 ) {
792- const msg = `Server returned http status ${ res . statusCode } `
793- outputctl . error ( msg )
794- return dlReject ( new Error ( msg ) )
795- }
796- const outStream = fs . createWriteStream ( outPath )
797- res . pipe ( outStream )
798- outStream . on ( 'finish' , ( ) => dlResolve ( ) )
799- outStream . on ( 'error' , dlReject )
800- } )
801- req . on ( 'error' , ( err ) => {
802- if ( err . name === 'AbortError' ) return dlResolve ( )
803- outputctl . error ( err . message )
804- dlReject ( err )
805- } )
806- } )
788+ const [ dlErr ] = await tryCatch (
789+ pipeline (
790+ got . stream ( resultUrl , { signal : abortController . signal } ) ,
791+ fs . createWriteStream ( outPath ) ,
792+ ) ,
793+ )
794+ if ( dlErr ) {
795+ if ( dlErr . name === 'AbortError' ) continue
796+ outputctl . error ( dlErr . message )
797+ throw dlErr
798+ }
807799 }
808800 }
809801 }
@@ -814,6 +806,7 @@ export default async function run(
814806 await fsp . unlink ( inPath )
815807 }
816808 }
809+ return assembly
817810 } ) ( )
818811
819812 jobsPromise . add ( singleAssemblyPromise )
@@ -912,27 +905,15 @@ export default async function run(
912905
913906 if ( outStream != null && resulturl && ! superceded ) {
914907 outputctl . debug ( 'DOWNLOADING' )
915- await new Promise < void > ( ( dlResolve , dlReject ) => {
916- const get = resulturl . startsWith ( 'https' ) ? https . get : http . get
917- const req = get ( resulturl , { signal : abortController . signal } , ( res ) => {
918- if ( res . statusCode !== 200 ) {
919- const msg = `Server returned http status ${ res . statusCode } `
920- outputctl . error ( msg )
921- return dlReject ( new Error ( msg ) )
922- }
923-
924- if ( superceded ) return dlResolve ( )
925-
926- res . pipe ( outStream )
927- outStream . on ( 'finish' , ( ) => res . unpipe ( ) )
928- res . on ( 'end' , ( ) => dlResolve ( ) )
929- } )
930- req . on ( 'error' , ( err ) => {
931- if ( err . name === 'AbortError' ) return dlResolve ( )
932- outputctl . error ( err . message )
933- dlReject ( err )
934- } )
935- } )
908+ const [ dlErr ] = await tryCatch (
909+ pipeline ( got . stream ( resulturl , { signal : abortController . signal } ) , outStream ) ,
910+ )
911+ if ( dlErr ) {
912+ if ( dlErr . name !== 'AbortError' ) {
913+ outputctl . error ( dlErr . message )
914+ throw dlErr
915+ }
916+ }
936917 }
937918
938919 outputctl . debug ( `COMPLETED ${ inPath ?? 'null' } ${ outPath ?? 'null' } ` )
0 commit comments