-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCSessionDescriptionCallback Mozilla RTCSessionDescriptionCallback documentation> 
newRTCSessionDescriptionCallbackAsync ::
                                      (MonadIO m) =>
                                        (Maybe RTCSessionDescription -> IO ()) ->
                                          m RTCSessionDescriptionCallback
newRTCSessionDescriptionCallbackAsync callback
  = liftIO
      (RTCSessionDescriptionCallback <$>
         asyncCallback1
           (\ sdp -> fromJSValUnchecked sdp >>= \ sdp' -> callback sdp'))
newRTCSessionDescriptionCallbackAsync ::
                                      (MonadIO m) =>
                                        (Maybe RTCSessionDescription -> IO ()) ->
                                          m RTCSessionDescriptionCallback
newRTCSessionDescriptionCallbackAsync callback
  = liftIO
      (RTCSessionDescriptionCallback <$>
         asyncCallback1
           (\ sdp -> fromJSValUnchecked sdp >>= \ sdp' -> callback sdp'))
newRTCSessionDescriptionCallbackAsync callback
  = liftIO
      (RTCSessionDescriptionCallback <$>
         asyncCallback1
           (\ sdp -> fromJSValUnchecked sdp >>= \ sdp' -> callback sdp'))