     :erlang.unique_integer(modifiers)
   end
 
-  defp convert_time_unit(:native),       do: :native
-  defp convert_time_unit(:seconds),      do: :seconds
-  defp convert_time_unit(:milliseconds), do: :milli_seconds
-  defp convert_time_unit(:microseconds), do: :micro_seconds
-  defp convert_time_unit(:nanoseconds),  do: :nano_seconds
+  defp normalize_time_unit(:native),
+    do: :native
+  defp normalize_time_unit(:seconds),
+    do: :seconds
+  defp normalize_time_unit(:milliseconds),
+    do: :milli_seconds
+  defp normalize_time_unit(:microseconds),
+    do: :micro_seconds
+  defp normalize_time_unit(:nanoseconds),
+    do: :nano_seconds
+  defp normalize_time_unit(unit) when is_integer(unit) and unit > 0,
+    do: unit
 
   # TODO: Warn on Elixir 1.4
-  defp convert_time_unit(erlang)
-      when erlang in [:milli_seconds, :micro_seconds, :nano_seconds] do
-    erlang
-  end
-
-  defp convert_time_unit(other) do
-    raise ArgumentError, "unsupported time unit. Expected :seconds, :milliseconds, " <>
-                         ":microseconds or :nanoseconds, got #{inspect other}"
+  defp normalize_time_unit(erlang_unit)
+      when erlang_unit in [:milli_seconds, :micro_seconds, :nano_seconds] do
+    erlang_unit
+  end
+
+  defp normalize_time_unit(other) do
+    raise ArgumentError,
+      "unsupported time unit. Expected :seconds, :milliseconds, " <>
+      ":microseconds, :nanoseconds, or a positive integer, " <>
+      "got #{inspect other}"
   end
 end

  """
  @spec system_time(time_unit) :: integer
  def system_time(unit) do
    :erlang.system_time(convert_time_unit(unit))
  end

  @doc """

  """
  @spec monotonic_time(time_unit) :: integer
  def monotonic_time(unit) do
    :erlang.monotonic_time(normalize_time_unit(unit))
  end

  @doc """
