in Bolts/src/bolts/Task.java [370:389]
public <TContinuationResult> Task<TContinuationResult> continueWithTask(
final Continuation<TResult, Task<TContinuationResult>> continuation, final Executor executor) {
boolean completed = false;
final Task<TContinuationResult>.TaskCompletionSource tcs = Task.<TContinuationResult> create();
synchronized (lock) {
completed = this.isCompleted();
if (!completed) {
this.continuations.add(new Continuation<TResult, Void>() {
public Void then(Task<TResult> task) {
completeAfterTask(tcs, continuation, task, executor);
return null;
}
});
}
}
if (completed) {
completeAfterTask(tcs, continuation, this, executor);
}
return tcs.getTask();
}