Http client behaviour
payload() :: String.t()
url() :: String.t()
post( url(), payload :: payload(), headers :: [{String.t(), String.t()}], opts :: [] ) :: {:ok, status :: integer(), headers :: [{String.t(), String.t()}], body :: String.t()} | {:error, String.t()}