diff --git a/src/workerd/api/streams/compression.c++ b/src/workerd/api/streams/compression.c++ index 2c95c43c962..e12eea7abf8 100644 --- a/src/workerd/api/streams/compression.c++ +++ b/src/workerd/api/streams/compression.c++ @@ -165,16 +165,15 @@ public: kj::Promise write(kj::ArrayPtr> pieces) override { KJ_SWITCH_ONEOF(state) { KJ_CASE_ONEOF(ended, Ended) { - return JSG_KJ_EXCEPTION(FAILED, Error, "Write after close."); - } - KJ_CASE_ONEOF(exception, kj::Exception) { - return kj::cp(exception); + JSG_FAIL_REQUIRE(Error, "Write after close"); } + KJ_CASE_ONEOF(exception, kj::Exception) { kj::throwFatalException(kj::cp(exception)); } KJ_CASE_ONEOF(open, Open) { - if (pieces.size() == 0) return kj::READY_NOW; - return write(pieces[0].begin(), pieces[0].size()).then([this, pieces]() { - return write(pieces.slice(1, pieces.size())); - }); + if (pieces.size() != 0) { + co_await write(pieces[0].begin(), pieces[0].size()); + co_await write(pieces.slice(1, pieces.size())); + } + co_return; } } KJ_UNREACHABLE;