diff --git a/src/Eloquent/DocumentModel.php b/src/Eloquent/DocumentModel.php
index d39a12401..965b1a444 100644
--- a/src/Eloquent/DocumentModel.php
+++ b/src/Eloquent/DocumentModel.php
@@ -5,7 +5,6 @@
 namespace MongoDB\Laravel\Eloquent;
 
 use BackedEnum;
-use Carbon\Carbon;
 use Carbon\CarbonInterface;
 use DateTimeInterface;
 use DateTimeZone;
@@ -128,7 +127,7 @@ public function fromDateTime($value): UTCDateTime
      *
      * @param  mixed $value
      */
-    protected function asDateTime($value): Carbon
+    protected function asDateTime($value): DateTimeInterface
     {
         // Convert UTCDateTime instances to Carbon.
         if ($value instanceof UTCDateTime) {
diff --git a/tests/DateTimeImmutableTest.php b/tests/DateTimeImmutableTest.php
new file mode 100644
index 000000000..a4dffb168
--- /dev/null
+++ b/tests/DateTimeImmutableTest.php
@@ -0,0 +1,43 @@
+<?php
+
+declare(strict_types=1);
+
+namespace MongoDB\Laravel\Tests\Eloquent;
+
+use Carbon\CarbonImmutable;
+use Illuminate\Support\Facades\Date;
+use MongoDB\Laravel\Tests\Models\Anniversary;
+use MongoDB\Laravel\Tests\TestCase;
+
+use function assert;
+
+final class DateTimeImmutableTest extends TestCase
+{
+    protected function setUp(): void
+    {
+        parent::setUp();
+
+        Anniversary::truncate();
+    }
+
+    protected function tearDown(): void
+    {
+        Date::useDefault();
+
+        parent::tearDown();
+    }
+
+    public function testCanReturnCarbonImmutableObject(): void
+    {
+        Date::use(CarbonImmutable::class);
+
+        Anniversary::create([
+            'name' => 'John',
+            'anniversary' => new CarbonImmutable('2020-01-01 00:00:00'),
+        ]);
+
+        $anniversary = Anniversary::sole();
+        assert($anniversary instanceof Anniversary);
+        self::assertInstanceOf(CarbonImmutable::class, $anniversary->anniversary);
+    }
+}
diff --git a/tests/Models/Anniversary.php b/tests/Models/Anniversary.php
new file mode 100644
index 000000000..fb78c9a55
--- /dev/null
+++ b/tests/Models/Anniversary.php
@@ -0,0 +1,30 @@
+<?php
+
+declare(strict_types=1);
+
+namespace MongoDB\Laravel\Tests\Models;
+
+use Illuminate\Database\Eloquent\Model;
+use MongoDB\Laravel\Eloquent\DocumentModel;
+use MongoDB\Laravel\Eloquent\Model as Eloquent;
+use MongoDB\Laravel\Query\Builder;
+
+/**
+ * @property string $name
+ * @property string $anniversary
+ * @mixin Eloquent
+ * @method static Builder create(...$values)
+ * @method static Builder truncate()
+ * @method static Eloquent sole(...$parameters)
+ */
+class Anniversary extends Model
+{
+    use DocumentModel;
+
+    protected $keyType = 'string';
+    protected $connection = 'mongodb';
+    protected $table = 'anniversary';
+    protected $fillable   = ['name', 'anniversary'];
+
+    protected $casts = ['anniversary' => 'immutable_datetime'];
+}