--- | Computation of @'abortSTM' status headers msg@ just computes
--- 'abort' in a STM monad.
-abortSTM :: StatusCode -> [ (String, String) ] -> Maybe String -> STM a
+-- |This is similar to 'abort' but compute it with
+-- 'System.IO.Unsafe.unsafePerformIO'.
+abortPurely :: StatusCode -> [ (ByteString, ByteString) ] -> Maybe String -> a
+abortPurely = ((unsafePerformIO .) .) . abort
+
+-- |Computation of @'abortSTM' status headers msg@ just computes
+-- 'abort' in a 'Control.Monad.STM.STM' monad.
+abortSTM :: StatusCode -> [ (ByteString, ByteString) ] -> Maybe String -> STM a