@@ -66,7 +66,8 @@ incoming tipe =
6666 Aliased _ t -> incoming t
6767
6868 App (Type v) [t]
69− | Var.isSignal v -> obj ["_P","incomingSignal"] <| incoming t
69+ | Var.isSignal v ->
70+ obj ["_P","incomingSignal"] <| incoming t
7071
7172 _ -> ["v"] ==> inc tipe (ref "v")
7273
@@ -124,10 +125,10 @@ inc tipe x =
124125
125126 Record fields Nothing ->
126127 check x (JSObject (map fst fields)) object
127− where
128− object = ObjectLit () $ (prop "_", ObjectLit () []) : keys
129− keys = map convert fields
130− convert (f,t) = (prop f, inc t (DotRef () x (var f)))
128+ where
129+ object = ObjectLit () $ (prop "_", ObjectLit () []) : keys
130+ keys = map convert fields
131+ convert (f,t) = (prop f, inc t (DotRef () x (var f)))
131132
132133
133134incomingTuple :: [CanonicalType] -> Expression () -> Expression ()
@@ -146,11 +147,25 @@ incomingTuple types x =
146147
147148outgoing :: CanonicalType -> Expression ()
148149outgoing tipe =
149− case tipe of
150− Aliased _ t -> outgoing t
150+ case T.dealias tipe of
151+ App (Type signal) [ App (Type promise) [_,_] ]
152+ | Var.isSignal signal && Var.isPromise promise ->
153+ obj ["_P","promiseStream"]
154+
155+ App (Type promise) [_,_]
156+ | Var.isPromise promise ->
157+ obj ["_P","promise"]
151158
159+ _ ->
160+ outgoingFunc tipe
161+
162+
163+outgoingFunc :: CanonicalType -> Expression ()
164+outgoingFunc tipe =
165+ case tipe of
152166 App (Type v) [t]
153− | Var.isSignal v -> obj ["_P","outgoingSignal"] <| outgoing t
167+ | Var.isSignal v ->
168+ obj ["_P","outgoingSignal"] <| outgoingFunc t
154169
155170 _ -> ["v"] ==> out tipe (ref "v")
156171
@@ -195,10 +210,10 @@ out tipe x =
195210 (out t (DotRef () x (var "_0")))
196211
197212 | Var.isArray name ->
198− DotRef () (_Array "toJSArray" <| x) (var "map") <| outgoing t
213+ DotRef () (_Array "toJSArray" <| x) (var "map") <| outgoingFunc t
199214
200215 | Var.isList name ->
201− DotRef () (_List "toArray" <| x) (var "map") <| outgoing t
216+ DotRef () (_List "toArray" <| x) (var "map") <| outgoingFunc t
202217
203218 Type name : ts
204219 | Var.isTuple name ->