Can we make custom AsyncOperations?

AssetBundleRequest subclasses AsyncOperation to do work in the background. Can we do this in our scripts, for defining custom background workers?

class ExpensiveComputationRequest : AsyncOperation {
  ...?
}

Aren’t basic coroutines just what you want ?