@SupportsOption(options = { KillSwitch.class })
public <R> Async<R> async(final F1<T, R> f, Option... options) {
final Queue<R> queue = Async.Queue();
final Async<R> async = new Async<R>(this.commonCore, queue);
final Options options$ = Options.$(this.commonCore, options);
final KillSwitch killswitch = options$.killswitch();
this.commonCore.sys.oneTime(new F0() {
@Override
public void f() {
try {
// Now process all elements
for (T t : CoreObject.this) {
// Check if we should terminate.
if(killswitch != null && killswitch.terminated()) return;
// Otherwise process next element.
try {
queue.add(Async.QEntry(f.f(t)));
} catch (Exception e) {