pub(crate) async fn handle_datagram_request(
    socket: Rc<RefCell<DatagramSocket>>,
    request: Result<SynchronousDatagramSocketRequest, Error>,
    sockets: &mut HashSet<SocketAddress>,
    loopback_receive_buffer: &mut VecDeque<(SocketAddress, Vec<u8>)>,
    receive_buffer_size: &mut u64,
    icmp_echo_receive_buffer: &mut VecDeque<(SocketAddress, Vec<u8>)>
) -> Result<(), Error>