sig
  type 'a t
  type ('a, 'execution_context) next_ =
    ('a, 'execution_context) Raw_stream.next =
      Nil
    | Cons of 'a * ('a, 'execution_context) Raw_stream.t
  type 'a next = ('a, Execution_context.t) Tail.Stream.next_
  val next : 'Tail.Stream.t -> 'Tail.Stream.next Deferred.t
  val of_raw : ('a, Execution_context.t) Raw_stream.t -> 'a t
  val to_raw : 'a t -> ('a, Execution_context.t) Raw_stream.t
  val sexp_of_t :
    ('-> Sexplib.Sexp.t) -> 'Tail.Stream.t -> Sexplib.Sexp.t
end