From laziness we treat value as {:ok, value} but if value is an error code then it should be {:error, value}.
A status should be descriptive and makes sense for the callee when pattern matching.
E.g. if a function spec is
{:ok, :connected} | {:ok, :received} | {:error, error_code} it can easily be changed to :connected | :received | {:error, error_code} without losing information.


















