Schedules a function to be run x number of seconds from now.

        The call_later method is primarily used to resend messages if we
        haven't received a confirmation message from the receiving host.
        We can wait x number of seconds for a response and then try
        sending the message again.

        Args:
          time_seconds (float): The number of seconds from now we should call
            the provided function.
          callback (function): The method to execute when our time has been
            reached. E.g. self.retransmit
          arguments (dict): A dictionary of arguments to send to the callback.

        Returns:
          None

def call_later(self, time_seconds, callback, arguments):
        """Schedules a function to be run x number of seconds from now.

        The call_later method is primarily used to resend messages if we
        haven't received a confirmation message from the receiving host.
        We can wait x number of seconds for a response and then try
        sending the message again.

        Args:
          time_seconds (float): The number of seconds from now we should call
            the provided function.
          callback (function): The method to execute when our time has been
            reached. E.g. self.retransmit
          arguments (dict): A dictionary of arguments to send to the callback.

        Returns:
          None

        """

        scheduled_call = {'ts': time.time() + time_seconds,
                          'callback': callback,
                          'args': arguments}
        self.scheduled_calls.append(scheduled_call)