def drain.step
import bend-kit-camber@0.15.0.1/camber.bend as Camberimport Base
157def drain.step(~R: Type, ~P: Data, ~I: Data, ~E: Data, ~O: Data,
158 ~destroy: R -> IO(Unit), pending: Maybe<&1, Message<R, P, I, E, O>>,
159 next: Unit -> IO(Unit)
160) -> IO(Unit):
161 match pending:
162 case None{}:
163 IO.pure(Unit, Unit{})
164 case Some{message}:
165 do IO<Unit>:
166 drain.message(~R, ~P, ~I, ~E, ~O, ~destroy, message)
167 next(Unit{})