   @doc """
   Receives a new incoming request from a remote host, or ACK.
 
-  The `server_transaction` 
+  The `server_transaction` indicates the name of the transaction created when
+  the request was received. If it is an ACK, then the `server_transaction` is
+  `nil`.
+
+  The function `receive_request/2` is called from the server transaction
+  process when the parameter `server_transaction` is not `nil`, and from the
+  transport process (possibly a `poolboy` worker process), when the
+  `server_transaction` is `nil`.
   """
   @callback receive_request(incoming_request :: Message.request,
                             server_transaction :: Transaction.Server.t | nil)


  @doc """
  Sends receives an error from the transaction.
  """
  @callback receive_error(reason :: term,
                          client_or_server_transaction ::


  @doc """
  Receives a response for a sent request.

  The `client_transaction` indicates the name of the transaction created when
  the request was sent using `Sippet.Transaction.send_request/1`.

  The function `receive_response/2` is called from the client transaction
  process when the parameter `client_transaction` is not `nil`, and from the
  transport process (possibly a `poolboy` worker process), when the
  `client_transaction` is `nil`.
  """
  @callback receive_response(incoming_response :: Message.response,
                             client_transaction :: Transaction.Client.t | nil)
