   used if the caller can not be identified (use UNAUTHENTICATED
   instead for those errors).
   """
+  @spec permission_denied :: t
   def permission_denied, do: 7
 
   @doc """
   Some resource has been exhausted, perhaps a per-user quota, or
   perhaps the entire file system is out of space.
   """
+  @spec resource_exhausted :: t
   def resource_exhausted, do: 8
 
   @doc """

  Means some invariants expected by underlying system has been broken.
  If you see one of these errors, something is very broken.
  """
  def internal, do: 13

  @doc """

  successful response from a server could have been delayed long
  enough for the deadline to expire.
  """
  @spec deadline_exceeded :: t
  def deadline_exceeded, do: 4

  @doc """
  Some requested entity (e.g., file or directory) was not found.
  """
  @spec not_found :: t
  def not_found, do: 5

  @doc """
  Some entity that we attempted to create (e.g., file or directory) already exists.
  """
  @spec already_exists :: t
  def already_exists, do: 6

  @doc """
