All Deferred_queue iteration functions first copy the queue (to a list) and then
start calling the user function f. So, if f modifies the queue, that will have no
effect on the iteration.
In the following, the default how is `Sequential
val init : ?how:Async_kernel.Monad_sequence.how ‑> int ‑> f:(int ‑> 'a monad) ‑> 'a t monadval iter : ?how:Async_kernel.Monad_sequence.how ‑> 'a t ‑> f:('a ‑> unit monad) ‑> unit monadval iteri : ?how:Async_kernel.Monad_sequence.how ‑> 'a t ‑> f:(int ‑> 'a ‑> unit monad) ‑> unit monadval map : ?how:Async_kernel.Monad_sequence.how ‑> 'a t ‑> f:('a ‑> 'b monad) ‑> 'b t monadval mapi : ?how:Async_kernel.Monad_sequence.how ‑> 'a t ‑> f:(int ‑> 'a ‑> 'b monad) ‑> 'b t monadval filter : ?how:Async_kernel.Monad_sequence.how ‑> 'a t ‑> f:('a ‑> bool monad) ‑> 'a t monadval filteri : ?how:Async_kernel.Monad_sequence.how ‑> 'a t ‑> f:(int ‑> 'a ‑> bool monad) ‑> 'a t monadval filter_map : ?how:Async_kernel.Monad_sequence.how ‑> 'a t ‑> f:('a ‑> 'b option monad) ‑> 'b t monadval filter_mapi : ?how:Async_kernel.Monad_sequence.how ‑> 'a t ‑> f:(int ‑> 'a ‑> 'b option monad) ‑> 'b t monad