private UpdateHostResponse resume(RestApi.RequestContext context) {
        String hostNameString = context.pathParameters().getStringOrThrow("hostname");
        HostName hostName = new HostName(hostNameString);
        try {
            orchestrator.resume(hostName);
        } catch (HostNameNotFoundException e) {
            log.log(Level.FINE, () -> "Host not found: " + hostName);
            throw new RestApiException.NotFound(e);
        } catch (UncheckedTimeoutException e) {
            log.log(Level.FINE, () -> "Failed to resume " + hostName + ": " + e.getMessage());
            throw restApiExceptionFromTimeout("resume", hostName, e);
        } catch (HostStateChangeDeniedException e) {
            log.log(Level.FINE, () -> "Failed to resume " + hostName + ": " + e.getMessage());
            throw restApiExceptionWithDenialReason("resume", hostName, e);
        }
        return new UpdateHostResponse(hostName.s(), null);
    }
@Test
    void throws_409_on_timeout() throws HostNameNotFoundException, HostStateChangeDeniedException, IOException {
        Orchestrator orchestrator = mock(Orchestrator.class);
        doThrow(new UncheckedTimeoutException("Timeout Message")).when(orchestrator).resume(any(HostName.class));

        RestApiTestDriver testDriver = createTestDriver(orchestrator);
        HttpResponse httpResponse = executeRequest(testDriver, Method.DELETE, "/orchestrator/v1/hosts/hostname/suspended", null);
        assertEquals(409, httpResponse.getStatus());
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        httpResponse.render(out);
        JsonTestHelper.assertJsonEquals("""
                        {
                          "hostname" : "hostname",
                          "reason" : {
                            "constraint" : "deadline",
                            "message" : "resume failed: Timeout Message"
                          }
                        }""",
                out.toString());
    }