@@ -35,6 +35,13 @@ export class ActivityCompletionError extends Error {}
3535@SymbolBasedInstanceOfError ( 'ActivityCancelledError' )
3636export class ActivityCancelledError extends Error { }
3737
38+ /**
39+ * Thrown by {@link AsyncCompletionClient.heartbeat} when the reporting Activity
40+ * has been paused.
41+ */
42+ @SymbolBasedInstanceOfError ( 'ActivityPausedError' )
43+ export class ActivityPausedError extends Error { }
44+
3845/**
3946 * Options used to configure {@link AsyncCompletionClient}
4047 */
@@ -211,6 +218,7 @@ export class AsyncCompletionClient extends BaseClient {
211218 async heartbeat ( taskTokenOrFullActivityId : Uint8Array | FullActivityId , details ?: unknown ) : Promise < void > {
212219 const payloads = await encodeToPayloads ( this . dataConverter , details ) ;
213220 let cancelRequested = false ;
221+ let paused = false ;
214222 try {
215223 if ( taskTokenOrFullActivityId instanceof Uint8Array ) {
216224 const response = await this . workflowService . recordActivityTaskHeartbeat ( {
@@ -220,6 +228,7 @@ export class AsyncCompletionClient extends BaseClient {
220228 details : { payloads } ,
221229 } ) ;
222230 cancelRequested = ! ! response . cancelRequested ;
231+ paused = ! ! response . activityPaused ;
223232 } else {
224233 const response = await this . workflowService . recordActivityTaskHeartbeatById ( {
225234 identity : this . options . identity ,
@@ -228,12 +237,16 @@ export class AsyncCompletionClient extends BaseClient {
228237 details : { payloads } ,
229238 } ) ;
230239 cancelRequested = ! ! response . cancelRequested ;
240+ paused = ! ! response . activityPaused ;
231241 }
232242 } catch ( err ) {
233243 this . handleError ( err ) ;
234244 }
235245 if ( cancelRequested ) {
236246 throw new ActivityCancelledError ( 'cancelled' ) ;
237247 }
248+ if ( paused ) {
249+ throw new ActivityPausedError ( 'paused' ) ;
250+ }
238251 }
239252}
0 commit comments