Deadline expired before operation could complete. For operations that
change the state of the system, this error may be returned even if the
operation has completed successfully. For example, a successful response
from a server could have been delayed long enough for the deadline to
expire.
Operation was rejected because the system is not in a state required for
the operation's execution. For example, directory to be deleted may be
non-empty, an rmdir operation is applied to a non-directory, etc.
Client specified an invalid argument. Note that this differs from
failedPrecondition. invalidArgument indicates arguments that are
problematic regardless of the state of the system (e.g., a malformed file
name).
The caller does not have permission to execute the specified operation.
permissionDenied must not be used for rejections caused by exhausting
some resource (use resourceExhausted instead for those errors).
permissionDenied must not be used if the caller cannot be identified
(use unauthenticated instead for those errors).
Unknown error. An example of where this error may be returned is if a
Status value received from another address space belongs to an error-space
that is not known in this address space. Also errors raised by APIs that
do not return enough error information may be converted to this error.