newChan :: (SunroofArgument a) => JS t (JSChan a)
newChan = do
  written <- newArray ()
  waiting <- newArray ()
  tuple (written, waiting)

-- | Put a value into the channel. This will never block.
newChan :: (SunroofArgument a) => JS t (JSChan a)
newChan = do
  written <- newArray ()
  waiting <- newArray ()
  tuple (written, waiting)

-- | Put a value into the channel. This will never block.
newChan = do
  written <- newArray ()
  waiting <- newArray ()
  tuple (written, waiting)

-- | Put a value into the channel. This will never block.