async fn sending<PK: PublicKey, D: Data, S: AsyncWrite + Unpin + Send>(
    sender: S,
    data_from_user: UnboundedReceiver<D>
) -> Result<(), ProtocolError<PK>>