@@ -29,6 +29,7 @@ import {
2929 internalErrorFromUnexpectedExit ,
3030 GracefulExitTimeoutError ,
3131 UnexpectedExitError ,
32+ SuspendedProcessError ,
3233} from "@trigger.dev/core/v3/errors" ;
3334
3435export type OnWaitForDurationMessage = InferSocketMessageSchema <
@@ -73,6 +74,7 @@ export class TaskRunProcess {
7374 private _gracefulExitTimeoutElapsed : boolean = false ;
7475 private _isBeingKilled : boolean = false ;
7576 private _isBeingCancelled : boolean = false ;
77+ private _isBeingSuspended : boolean = false ;
7678 private _stderr : Array < string > = [ ] ;
7779
7880 public onTaskRunHeartbeat : Evt < string > = new Evt ( ) ;
@@ -347,7 +349,11 @@ export class TaskRunProcess {
347349 // Order matters, this has to be before the graceful exit timeout
348350 rejecter ( new GracefulExitTimeoutError ( ) ) ;
349351 } else if ( this . _isBeingKilled ) {
350- rejecter ( new CleanupProcessError ( ) ) ;
352+ if ( this . _isBeingSuspended ) {
353+ rejecter ( new SuspendedProcessError ( ) ) ;
354+ } else {
355+ rejecter ( new CleanupProcessError ( ) ) ;
356+ }
351357 } else {
352358 rejecter (
353359 new UnexpectedExitError (
@@ -428,6 +434,11 @@ export class TaskRunProcess {
428434 }
429435 }
430436
437+ async suspend ( ) {
438+ this . _isBeingSuspended = true ;
439+ await this . kill ( "SIGKILL" ) ;
440+ }
441+
431442 forceExit ( ) {
432443 try {
433444 this . _isBeingKilled = true ;
0 commit comments