pub async fn run_adapter<D, I, O, E>(
input: I,
output: O,
adapter_factory: impl FnOnce(UnboundedSender<Either<ProtocolMessage, <D as DebugAdapter>::Message>>) -> D,
) -> Result<(), DebugAdapterError<E, <O as Sink<ProtocolMessage>>::Error, <D as DebugAdapter>::CustomError>>